1. 程式人生 > >【奔跑的菜鳥】Java中的繼承關係

【奔跑的菜鳥】Java中的繼承關係

對於面向物件的程式設計,最總要的三個特徵就是繼承、封裝、多型。我們現在來看看繼承是如何一步一步實現的。看下面程式碼:
public class Test
{
	public static void main(String[] args)
	{
		FuncationOfThis m_this = new FuncationOfThis();
		System.out.println("*******************************************");
		Child m_child = new Child();
		System.out.println("*******************************************");
		Child m_childargs = new Child(1);
	}
}

class FuncationOfThis
{
	FuncationOfThis()
	{
		this(1);
		System.out.println("with_this");
	}
	FuncationOfThis(int i)
	{
		System.out.println("without_this");
	}
	
}



class Parent
{
	Parent()
	{
		System.out.println("parent");
	}
	
	Parent(int i)
	{
		System.out.println("argsParent"+i);
	}
}

class Child extends Parent
{
	Child()
	{
		System.out.println("child");
	}
	
	Child(int a)
	{
		super(a);
		System.out.println("argsChild"+a);
	}
	
}


執行結果如下:

without_this
with_this
*******************************************
parent
child
*******************************************
argsParent1
argsChild1

先是this()的用法,this()是呼叫這個類帶引數的建構函式。而super()是呼叫父類帶引數的建構函式。this()和super()在建構函式中使用時必須出現在建構函式的第一行。關於建構函式的呼叫順序,在new一個新物件是呼叫建構函式。如果new的物件有父類,那麼先呼叫父類的建構函式,再呼叫子類的建構函式。

this()表示對自身類的引用,super()表示對父類的引用。super()在引用建構函式時必須放在第一行,引用非建構函式無此要求。


相關推薦

奔跑Java繼承關係

對於面向物件的程式設計,最總要的三個特徵就是繼承、封裝、多型。我們現在來看看繼承是如何一步一步實現的。看下面程式碼:public class Test { public static void main(String[] args) { FuncationOfThi

奔跑JavaTreeSet的自定義排列順序

      在Java程式設計中有時會用到TreeSet這個類,這個類會對裡面的key進行自動的排序。一般是進行自然序列排序,但是自然序列排序,一般都沒什麼用。我們大多數情況下需要它按照我們自己要求的方式進行排序。下面這個例子就是把一個類的引用放到TreeSet中,然後按照

奔跑Java的抽象類

不過是在Java中還是在C/C++中,都有抽象類的概念。不過關鍵字不同,Java中抽象類的關鍵字是abstract。同樣的道理,既然有抽象類,那麼就有抽象的方法(有申明無實現)。抽象方法的關鍵字也是abstract。抽象類不可以例項化,用來生成子類。抽象方法一定只能在抽象類

奔跑Java的介面

Java中的介面其中的方法必須全為抽象型方法。定義介面的關鍵字為interface。介面本身不可以生成例項。通常,可以用class實現一個介面。Java中是單繼承的,但是一個類可以實現多個介面。用class實現介面的關鍵字是implements。一個子類可以繼承一個父類同時

奔跑Java的引用傳遞

剛開始從C/C++轉到Java感覺真的有點不適應,在Java傳遞時,經常有時弄不清楚,可以通過下面一個Java程式來分析一下public class Test { public static void main(String[] args) { Person per

奔跑Java的設計模式——裝飾模式

Java中有許多設計模式,本片文章通過一個簡化的裝飾模式的程式碼,實現一個簡單的裝飾模式。 package com.java; public interface Component { public void doSomething(); } package com.j

第9天Java字串的處理

1 String類的初始化、與StringBuffer類和StringBuilder類三者的區別 1.1 String類的初始化兩種方式 1.2 String類、StringBuffer類和StringBuilder類三者的區別

字串反轉總結Java七種方法實現

演算法比較簡單,註釋就能說明問題,直接上程式碼! 方法一:(利用遞迴實現) public static String reverse1(String s) { int length = s.length(); if (length <= 1) retur

c++與Java繼承關係對成員訪問許可權的影響之比較

c++中繼承關係對成員訪問許可權的影響: c++中父類定義的public成員,在子類中可以被覆寫為private;同樣的,父類中的private成員,在子類中可以是public。程式判斷一個例項對 成員是否有訪問許可權時,根據該例項在形式上是父類還是子類,所謂形式上,是說由於

到高手程式語言的 eval 與 REPL

1 深入理解 Expression 與 Statement 的區別 在程式語言中,表示式(expression)與語句(statement)有著不同的內涵。只有理解了它們的不同,才能更加清楚的理解不同語言中 eval 的異同。 原始碼在編譯或解析執行時,首先會

Java基本功一文了解Java繼承、封裝、多型的細節

  本節主要介紹Java面向物件三大特性:繼承 封裝 多型,以及其中的原理。 本文會結合虛擬機器對引用和物件的不同處理來介紹三大特性的原理。 繼承 Java中的繼承只能單繼承,但是可以通過內部類繼承其他類來實現多繼承。 public class Son extends Father{p

深入理解JVMJava繼承關係的初始化順序

Java類初始化的順序經常讓人犯迷糊,現在本文嘗試著從JVM的角度,對Java非繼承和繼承關係中類的初始化順序進行試驗,嘗試給出JVM角度的解釋。 非繼承關係中的初始化順序 對於非繼承關係,主類InitialOrderWithoutExtend中包含了靜

學習筆記Java生成對象的5方法

目標 獲得 cti com pre lan except 我們 highlight 概述:本文介紹以下java五種創建對象的方式: 1.用new語句創建對象,這是最常用的創建對象的方式。 2.使用Class類的newInstance方法 3.運用反射手段,調用java.la

1000行代碼徒手寫正則表達式引擎1--JAVA正則表達式的使用

基礎上 unicode 要求 [1] 分配 find 通過 images char 簡介: 本文是系列博客的第一篇,主要講解和分析正則表達式規則以及JAVA中原生正則表達式引擎的使用。在後續的文章中會涉及基於NFA的正則表達式引擎內部的工作原理,並在此基礎上用1000行左右

轉載JavaComparable和Comparator比較

import 比較器 todo itl 復制代碼 ack div array open 【本文轉自】http://www.cnblogs.com/skywang12345/p/3324788.html Comparable 簡介 Comparable 是排序接口。 若一

JavaJava的數據類型

target java 基本數據類型 item ref cnblogs com 技術分享 aik Java 語言是一種強類型語言。通俗點說就是,在 Java 中存儲的數據都是有類型的,而且必須在編譯時就確定其類型。Java 數據類型分為兩類,如圖: 在 Jav

知了堂學習筆記java常用集合的理解

style out hset 篩選 arraylist list 內容 必備 foreach   最近學習了java中常用集合類的一些知識,在這裏作為一只小白,我來談談我的理解,順帶總結知識點。 引入:在沒有接觸之前,聽到集合,給我感覺是想到了數學中的集合一樣,裏面存放著一

轉載JAVAIO流操作的基本規律總結

reader 對象 作文 若是 gpo 是否 目的 io流 基本 流操作的基本規律:三個明確 1.明確源和目的; 源:輸入流即讀取流 InputStream,Reader 目的:輸出流即寫入流 OutputStream, Writer 2.明確操作的數據是

redis,1java操作redis: 將string、list、map、自己定義的對象保存到redis

n) spa 存儲 div ber sys mil 操作 write 一、操作string 、list 、map 對象 1、引入jar: jedis-2.1.0.jar 2、代碼 /

javajava byte[]、File、InputStream 互相轉換

new 文件名 讀寫 文件 tps byte數組 lan http 過程 ========================================================================= 使用過程中,一定要註意close()掉各個讀寫流!!