父類子類java
⑴ java的單繼承中允許一個父類有多個子類嗎
java中對於繼承,java只支持單繼承。java雖然不直接支持多繼承,但是保留了這種多繼承機制,進行改良。
單繼承:一個類只能有一個父類。
多繼承:一個類可以有多個父類。
為什麼不支持多繼承呢?
因為當一個類同時繼承兩個父類時,兩個父類中有相同的功能,那麼子類對象調用該功能時,運行哪一個呢?因為父類中的方法中存在方法體。
但是java支持多重繼承。A繼承BB繼承CC繼承D。
多重繼承的出現,就有了繼承體系。體系中的頂層父類是通過不斷向上抽取而來的。它裡面定義的該體系最基本最共性內容的功能。
所以,一個體系要想被使用,直接查閱該系統中的父類的功能即可知道該體系的基本用法。那麼想要使用一個體系時,需要建立對象。建議建立最子類對象,因為最子類不僅可以使用父類中的功能。還可以使用子類特有的一些功能。
簡單說:對於一個繼承體系的使用,查閱頂層父類中的內容,創建最底層子類的對象。
子父類出現後,類中的成員都有了哪些特點:
1:成員變數。
當子父類中出現一樣的屬性時,子類類型的對象,調用該屬性,值是子類的屬性值。
如果想要調用父類中的屬性值,需要使用一個關鍵字:super
This:代表是本類類型的對象引用。
Super:代表是子類所屬的父類中的內存空間引用。
注意:子父類中通常是不會出現同名成員變數的,因為父類中只要定義了,子類就不用在定義了,直接繼承過來用就可以了。
⑵ java里什麼叫 超類 父類 子類 派生類 基類 , 能用大白話說一下嗎網上資料看不明白
超類就是Object,java裡面的所有類的頂級類,父類和子類是有繼承關系的時候產生的,派生類是c++裡面的叫法,Java裡面並沒有,基類一般是抽象類,可以有任何多個類去繼承它
⑶ 在java 中,什麼叫父類,什麼叫子類
父類和子類,就例如:老子和兒子,有著父子關系。而這里指的父子關系,其實也就是一種包含關系。打個比方,在我們現實生活中,學生Student是一個很大的概念,而U_Student大學生是屬於學生中的一種,這里的學生即為父類,大學生即為子類。
父類和子類區別在哪?
學生和大學生都會有學習Study這個方法,但是大學生還會有自己特有的Study方法,兩者還是有一定區別的,大學生的學習相較於其他學生來說,是更自由的。假如現在已經有一個學生(Student)類,然後我還要寫一個大學生(U_Student)類,然後大學生UStudent類里有很多方法和Student里的方法都相同,但是還是有一小部分不同,怎樣解決呢?難道還要重新寫一個大學生類,並且重復敲一遍和學生類中一樣的代碼嗎?那樣浪費了時間和精力,並且浪費了存儲空間,是很不劃算的。所以,就有了「繼承」。
子類繼承父類,就是子類能引用父類中的某些東西。繼承的關鍵字是extends,
例如:
public class Student(){}//父類
public class U_Student extends Student(){}//子類繼承了父類
當子類和父類用一個同名方法,但是子類的實現卻和父類不同,用到"方法重寫"。
重寫是指方法定義相同,但是實現不同,存在於父子類之間。
例如:
//父類
public class Student(){
//學習方法
public void study(){
System.out.println("我通過聽老師講課學習");
}
}
//子類
public class UStudent extends Student(){
public void study(){
System.out.println("我通過自習去學習");
}
}
⑷ java什麼是繼承什麼是父類什麼是子類
繼承是面向對象的三大特徵之一,直接說定義不好理解,我打個比方吧,現在需要男人,女人,老人,小孩4個類,每個類都有很多屬性,而且有一部分相同的屬性,例如每個人都有身高,體重等等,我們就可以提取這些相同的部分,建立一個新的類:人類,然後把公共的屬性寫在人類里,用其他4個來繼承人類,其他4個類就不需要寫這些屬性,而是可以直接調用這些屬性。
我這個例子,人類就是父類,其他4個類繼承人類,所以是人類的子類!
⑸ JAVA中父類對象和子類的區別
子類用extends
繼承父類
子類可以調用父類非私有的方法,屬性
父類不可以調用子類裡面特有的方法屬性
子類可以重寫、重載父類方法
子父類和普通的類其實區別不大,你是在理解不了就拿現實中的父親兒子來理解就行,父親獨有的,兒子不能用,兒子獨有的父親不能用,但是其他的,父親有的兒子不是都可以用么。
⑹ Java在父類中如何創建子類對象
你好,很高興回答你的問題。
可以進行如下修改,將breed的實現移到抽象父類Animal中,略做修改,修改後代碼如下
public Animal breed(){
Animal ret =null;
if(isBreedable() &&Math.random()<getValue()){
ret=getAnimal();
}
return ret;
}
父類Animal中增加如下兩個抽象方法:
public abstract double getValue();
public abstract Animal getAnimal();
在Fox中不再需要實現breed,實現新定義的兩個方法:
public abstract double getValue(){
return 0.5;
}
public abstract Animal getAnimal(){
return new Fox();
}
在Rabbit類中類似處理:
public abstract double getValue(){
return 0.12;
}
public abstract Animal getAnimal(){
return new Rabbit();
}
如果有幫助到你,請點擊採納。
我解答的大部分是軟體開發新人遇到的問題,如果有興趣可以關注我。