java類繼承-九游会j9娱乐平台
a. java中定義一個類可以同時繼承兩個類
java中一個類不能直接繼承兩個類。
比如說這樣:class a extends b,c
不能這樣寫,因為java不支持多繼承,但是可以像下面這樣實現繼承多個類:
class a extends b
class c extends a
這樣c就同時繼承了b和a兩個類。
(1)java類繼承擴展閱讀
當子類繼承了某個類之後,便可以使用父類中的成員變數,但是並不是完全繼承父類的所有成員變數。具體的原則如下:
1)能夠繼承父類的public和protected成員變數;不能夠繼承父類的private成員變數;
2)對於父類的包訪問許可權成員變數,如果子類和父類在同一個包下,則子類能夠繼承;否則,子類不能夠繼承;
3)對於子類可以繼承的父類成員變數,如果在子類中出現了同名稱的成員變數,則會發生隱藏現象,即子類的成員變數會屏蔽掉父類的同名成員變數。如果要在子類中訪問父類中同名成員變數,需要使用super關鍵字來進行引用。
b. java中的繼承都有哪些
繼承分為單重繼承和多重繼承;單繼承:一個子類只有唯一的父類;多重繼承:一個子類可以繼承多個父類;但是java不支持多繼承。子類繼承父類,子類繼承了父類的屬性可以調用父類的方法,還可以自己添加方法。
c. java類的繼承
這個簡單:
因為student 類標明了extends person
所以student是繼承自person,所以繼承了該類的公有方法和屬性,所以也有name和age,又自己加了一個屬性majorty,
在main方法里,聲明了一個person數組
person作為聲明可以new出其子類的對象,所以person[1]是student類,調用的方法是student類覆蓋的person的print方法
記得加分哦~這可是0分懸賞
d. java:怎樣繼承其他java文件中的類(在同一個目錄下)
你先編譯a.java,再編譯b.java,在編譯b的時候可能需要指定classpath。或者你試下直接用javac *.java批量編譯。
補充:我試了,可以呀!
以下是我的測試:
======================cmd.exe===========================
e:\java>tree /f
卷 軟體暫放 的文件夾 path 列表
卷序列號為 34bc-af78
e:.
a.java
b.java
沒有子文件夾
e:\java>javac *.java
e:\java>java b
hello a!
e:\java>
========================================================
其中:
class a{
public void fun(){
system.out.println("hello a!");
}
}
===========================================
class b extends a{
public static void main(string[] a){
b b = new b();
b.fun();
}
}
=====================
如果是因為你類中使用了包聲明,則請參閱這個
http://..com/question/126658240.html
^_^
再次補充:
如果你一定要將你的源代碼成功編譯的話,倒可以這樣做:
=======cmd==========
e:\java>tree /f
卷 軟體暫放 的文件夾 path 列表
卷序列號為 34bc-af78
e:.
└—mypk
a.java
b.java
e:\java>
===============end of cmd============
將你兩個類文件放在e:\java\mypk目錄下,注意最後一個是mypk,和你包名相同。
然後將cmd切換到mypk上一個目錄,即上面的e:\java目錄中,
==============cmd======================
e:\java>javac mypk/a.java
e:\java>javac mypk/b.java
e:\java>java mypk.b
exception in thread "main" java.lang.nosuchmethoderror: main
e:\java>
============end of cmd =====================
首先使用「javac mypk/a.java」編譯,這里最後一個「/」表示「目錄層次」的意思。
然後用「e:\java>java mypk.b」運行,這里最後一個「.」表示「包結構」的意思。
最後拋出的那個異常是因為你b.java中沒有main()函數所致。
e. java語言的類間的繼承關系是
java語言中的類只支持單繼承,而介面支持多繼承。
java中多繼承的功能是通過介面(interface)來間接實現的。
java不支持多繼承,單繼承使java的繼承關系很簡單,一個類只能有一個父類,易於管理程序,同時一個類可以實現多個介面,從而克服單繼承的缺點。
繼承分為單繼承和多重繼承。單繼承是指一個子類最多隻能有一個父類。多繼承是一個子類可以有二個以上的父類。由於多繼承會帶來二義性,在實際應用中應盡量使用單繼承。
繼承是面向對象最顯著的一個特性。繼承是從已有的類中派生出新的類,新的類能吸收已有類的數據屬性和行為,並能擴展新的能力。[1] java繼承是使用已存在的類的定義作為基礎建立新類的技術,新類的定義可以增加新的數據或新的功能,也可以用父類的功能,但不能選擇性地繼承父類。這種技術使得復用以前的代碼非常容易,能夠大大縮短開發周期,降低開發費用。
f. java繼承與類
首先,需要了解一下java關於類繼承和介面實現的基礎理論知識,如下:
類繼承:繼承是面向對象最顯著的一個特性。繼承是從已有的類中派生出新的類,新的類能吸收已有類的數據屬性和行為,並能擴展新的能力。java繼承是使用已存在的類的定義作為基礎建立新類的技術,新類的定義可以增加新的數據或新的功能,也可以用父類的功能,但不能選擇性地繼承父類。
介面實現:介面實現在java中是一種特殊繼承方式,介面在定義後,就可以在類中實現該介面。在類中實現介面可以使用關鍵字implements,其基本格式如下:
[修飾符] class <類名> [implements 介面列表]{
}
然後,需要創建父類和定義介面,如下:
創建父類:
classbird{
intlegnum=2;
voidegg(){
};
}
定義介面:
interfaceflyanimal{
voidfly();
}
最後,可以創建一個類來繼承上面的父類和實現上面的介面,如下:
{
publicvoidfly(){
system.out.println("pigeoncanfly");
}
publicvoidegg(){
system.out.println("pigeoncanlayeggs");
}
}
g. 關於java中類的繼承
private int x; int sz[]=new int[x]; 這兩個定義本身就有問題,x木有初始化,你只能new int[x]. 還有 你為sz賦值 直接 sz=a就可以為什麼要循環? 關於第二個問題 每次實例化時都會自動調用父類構造方法 和靜態語句塊,..就說這么多,學學java基礎吧
h. java如何實現類的繼承
你好,很高興回答你的問題。
java實現類的繼承是通過下面這樣。
假定父類是a,要讓子類b繼承a類,則b類的定義是下面這樣:
public class b extends a{
}
如果有幫助到你,請點擊採納。
i. java中什麼是繼承
繼承在本職上是特殊一般的關系,即常說的is-a關系。子類繼承父類,表明子類是一種特殊的父類,並且具有父類所不具有的 一些屬性或方法。
1.java繼承的語法格式:
java繼承的關鍵字是:extends
public class 子類名 extends 父類名{...}
如: public class unstudent extends student {...} 註:1.子類又稱超類,拓展類 ;父類又稱基類。
2.java中類的繼承只能是單繼承(單根繼承),即一個類只能繼承一個父類,但是一個類可以由多個類來繼承它。
3.java會給每一個沒有設置父類的類,自動添加一個父類就是object 。
(9)java類繼承擴展閱讀:
一、子類繼承父類的結果
1.子類繼承父類後,繼承到了父類所有的屬性和方法。註:是所有。
2.子類可調用的方法也要看情況而定:
子類和父類在同一個包下時 「子類和子類的對象」可以調用父類的默認的,受保護的,公有的屬性以及方法。
子類和父類在不同的包下時,在子類中可以調用受保護的,公有的屬性以及方法,而子類的對象可以調用受保護的,公有的屬性以及方法。
二、方法的重寫
1.當子類和父類都有某種方法,而子類的方法更加要求細致,或者實現功能不同,就需要方法的重寫。
2.重寫條件
①必須要存在繼承關系;只有繼承之間的關系才能有方法的重寫
②方法的返回值類型,方法名,參數個數,參數類型,參數順序,必須要完全一致;
如:父類中方法 public void play (int n ; string s){方法體1...}
重寫後的子類方法public void play(int n ; string s){方法體2...}
3.子類重寫方法時的訪問修飾符可以大於或者等於父類方法的訪問修飾符。
4.重寫後的方法會被優先調用。
三、自動轉型
自動轉型的實現要求有繼承關系
格式如下:父類名 對象名 = new 子類構造方法;
如:student stu = new unstudent;
而強制轉型格式如下:子類名 對象名 = (子類名)父類對象名
如:unstudent un = (student)stu;
自動轉型可以拓寬方法的作用訪問域
在使用自動轉型後,子類自己定義的方法是不能在自動轉型後執行;
原因是因為java的編譯機制,它會優先判斷父類中是否存在該方法,如果存在則通過編譯,如果不存在則報錯。
第二種自動轉型:轉型後只需要不同類的不同對象調用想吐的方法,很方便!
/**訪問修飾符 返回值數據類型 方法名(父類類型 參數名,...){
調用方法。
}
父類名 對象名 = new 子類名;
子類名 對象名 = new 子類名;
方法名(對象名);
*/
比如拿到駕駛證為a2的人,可以駕駛重型貨車,當然也可以駕駛大型貨車,中型貨車,小型貨車,小客車,小轎車,摩托車... 可以選擇第二種自動轉型的方法,便於調用同一個方法。
自動轉型好處:1.減少冗餘代碼;2.在方法設置參數時,擴大訪問范圍。
四、多態
多態是由方法重載,繼承,方法重寫,自動轉型等技術的組合。
五、為什麼需要繼承?
1.提高代碼的重用性。
2.提高程序的擴展性。
java繼承總結