首頁  >  文章  >  Java  >  JAVA入門系統教學(八)物件導向(繼承)

JAVA入門系統教學(八)物件導向(繼承)

php是最好的语言
php是最好的语言原創
2018-08-10 11:06:261947瀏覽

物件導向(繼承)

#1. 繼承的概念:繼承是類別與類別的關係,是一種「is a」的關係

   父類別--->基底類別       子類別--->衍生類別 

#  註:JAVA中的繼承是單一繼承

2. 繼承的優點:子類別擁有父類別的所有屬性和方法(private修飾的無效)實作程式碼重複使用

##3 .語法規則:class 子類別extends 父類別

範例:

package example;

public class Animal {
	public int age;
	public String name;
	public void eat() {
		System.out.println("动物不吃东西就会饿");
	}
}

package example;

public class Dog extends Animal{
	
}
JAVA入門系統教學(八)物件導向(繼承)


4.方法的重寫:如果子類別對繼承父類別的方法不滿意,是可以重寫父類別繼承的方法的,當呼叫方法時會有限呼叫子類別的方法

    語法規則:傳回值類型,方法名,參數型別及個數都要與父類別繼承的方法相同,才叫方法重寫

例:在狗狗類別中增加eat方法

package example;

public class Dog extends Animal{
	public void eat() {
		System.out.println("年龄:"+age+"\n狗狗不吃东西就会饿");
	}
}
JAVA入門系統教學(八)物件導向(繼承)


#5. 繼承中初始化順序

   1)初始化父類別再初始子類別

   2)先執行初始化物件中屬性,再執行建構方法中的初始化

範例:

package example;

public class Animal {
	public int age;
	public String name;
	public void eat() {
		System.out.println("年龄:"+age+"\n动物不吃东西就会饿");
	}
	public Animal() {
		System.out.println("这是执行了Animal类");
	}
}

package example;

public class Dog extends Animal{
	public Dog() {
		System.out.println("这是执行了Dog类");
	}
}
JAVA入門系統教學(八)物件導向(繼承)

再例如:

我們在Animal類別中先給age賦值,再在Animal方法中給age再次賦值

package example;

public class Animal {
	public int age = 10;
	public String name;
	public void eat() {
		System.out.println("年龄:"+age+"\n动物不吃东西就会饿");
	}
	public Animal() {
		System.out.println("这是执行了Animal类");
		age = 20;
	}
}

接下來我們看看輸出結果

JAVA入門系統教學(八)物件導向(繼承)

#6. final關鍵字的使用

   使用final關鍵字做標識有「最終的」意義,即不可修改不可變更

##   final可以修飾類別、方法、屬性和變數

   ps:當修飾類別的時,則該類別不可以被繼承

         當修飾方法時,則此方法不依序被覆寫(重寫)

         當修飾屬性時,則該類別的屬性不會進行隱含的初始化(類別的屬性化屬性必須有值)在建構方法中賦值(但只能選其一)

         當修飾變數時,則變數的值只能賦一次值,即變成常數

   JAVA入門系統教學(八)物件導向(繼承)

7. super關鍵字的使用:在物件內部使用,可以代表父類別物件

   1)存取父類別的屬性:super.age

   2)存取父類別的方法:super.eat()

#例:

package example;

public class Dog extends Animal{
	public Dog() {
		System.out.println("这是执行了Dog类");
	}
	public void method() {
		System.out.println(super.age);
		super.eat();
	}
}

   JAVA入門系統教學(八)物件導向(繼承)

   3)super的應用

        子類別的建構方法的過程中必須呼叫其父類別的建構方法。

public class Dog extends Animal{
	public Dog() {
		super(); //这里是显示的  写与不写是一样的 但写的话必须放在第一行
		System.out.println("这是执行了Dog类");
	}
	public void method() {
		System.out.println(super.age);
		super.eat();
	}
}

JAVA入門系統教學(八)物件導向(繼承)

     如果子類別的建構方法中沒有顯示呼叫父類別的建構方法,則系統預設呼叫父類別無參構造方法

     如果顯示的呼叫建構方法,必須在紫二磊的建構方法的第一行。

     如果子類別建構方法中既沒有明確呼叫父類別的建構方法,而父類別又沒有無參考構造方法,則編譯出錯

public class Animal {
	public int age = 10;
	public String name;
	public void eat() {
		System.out.println("年龄:"+age+"\n动物不吃东西就会饿");
	}
/*	public Animal() {
		System.out.println("执行Animal类构造方法");
	}*/
	public Animal(int age) {
		this.age = age ;
	}
}

JAVA入門系統教學(八)物件導向(繼承)

8. Object類:是所有類別的父類,如果一個類別沒有使用extends關鍵字明確標識繼承另外一個類,那麼這個類別預設繼承Object類別。

   Object類別中的方法,適合所有的子類別。

   1)toString()方法

       定義一個toString()方法的時候傳回的物件的哈希code碼(物件位址字串)

       可以通过重写toString()方法表示出对象的属性。

   2)equals()方法

       比较的是对象的引用是否指向同一块内存地址。 

       一般情况下比较两个对象时比较他的值是否一致,所以要进行重写。

JAVA入門系統教學(八)物件導向(繼承)

此时若同时给age赋相同值

JAVA入門系統教學(八)物件導向(繼承)

由此可见还是输出false 在这我们建立equals方法

创建equals方法:  Source --> Generate hashCode() and equals()...

JAVA入門系統教學(八)物件導向(繼承)

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())  //判断两个对象的类型是否相同
			return false;
		Dog other = (Dog) obj;
		if (age != other.age)
			return false;
		return true;
	}

JAVA入門系統教學(八)物件導向(繼承)

此时结果就为true了

####END####

相关文章:

JAVA入门系统教程(六)面向对象(封装)

JAVA入门系统教程(七)面向对象(封装2)

以上是JAVA入門系統教學(八)物件導向(繼承)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn