java的繼承關系
① 如何定義java繼承的關系
首先是確定你的對象之間的關系,一般情況下都是由子類來繼承父類的東西(比如回屬性方法等)在繼承的時候答用extend關鍵字來表示比如有兩個類A和B,A繼承B那麼如下:
public
class
A
{
}
public
class
B
extend
A
{
}
這樣的話B類就可以繼承和擁有A的所有屬性和方法;有不明白的就到這個網址看下吧!http://wenku..com/view/69de2c37f111f18583d05a62.html
② java中子類和父類繼承關系的應用
父類更多的是一個繼承的作用,比如我現在需要製作好多傢具,但是這些傢具專都有一些共同特性:都是實屬木,加工程序,銷售程序等,然後沙發有沙發的特性,桌子有桌子的特性,定義類的繼承主要是為了更好的拓展,比如某天我所有的傢具的加工程序突然都改變了,如果沒有父類,我是不是要在所有的子類裡面都去重新修改加工程序?但是如果這些傢具都繼承了同一個父類的話,我就只需要修改父類(也就是傢具)的加工程序,就不需要沙發、桌子什麼的都修改了。。
而父類的作用還不僅如此,比如我現在需要執行「加工」這一方法,但是我不知道是執行加工沙發還是執行加工桌子,那麼久直接選擇執行加工傢具了,類的繼承一個是方法屬性的繼承,還有就是一種規范(跟介面一樣)。。
③ Java中繼承關系的理解
很簡單 流程問題
創造子類對象時候 先調用父類無參構造方法
所以先運行
public P()
{
System.out.println("P constructor");
output();
}
然後調用output();
public void output()
{
System.out.println("P.output(),val+"+val);
}
這里是重點 因為子類存在private int val = 1; 覆蓋了private int val = 10; 但是這個時候並沒有讀到private int val = 1所以是默認值0
最後調用
public A(int val)
{
this.val = val;
System.out.println("A constructor");
}
所以就是
P constructor
A.output(),val=0
A constructor
④ java語言的類間的繼承關系是
Java語言中的類只支持單繼承,而介面支持多繼承。
Java中多繼承的功能是通過介面(interface)來間接實現的。
JAVA不支持多繼承,單繼承使JAVA的繼承關系很簡單,一個類只能有一個父類,易於管理程序,同時一個類可以實現多個介面,從而克服單繼承的缺點。
繼承分為單繼承和多重繼承。單繼承是指一個子類最多隻能有一個父類。多繼承是一個子類可以有二個以上的父類。由於多繼承會帶來二義性,在實際應用中應盡量使用單繼承。
繼承是面向對象最顯著的一個特性。繼承是從已有的類中派生出新的類,新的類能吸收已有類的數據屬性和行為,並能擴展新的能力。[1] Java繼承是使用已存在的類的定義作為基礎建立新類的技術,新類的定義可以增加新的數據或新的功能,也可以用父類的功能,但不能選擇性地繼承父類。這種技術使得復用以前的代碼非常容易,能夠大大縮短開發周期,降低開發費用。
⑤ 如何查看java類的繼承關系
publicclass查看
{
publicstaticvoidmain(String[]args)
{
System.out.println(" ==========如何查看java類的繼承關系========== ");
init();
}//初始化!
privatestaticvoidinit()
{
Dogd=newDog();
Animala=newAnimal();
//查看對象超類!
Strings=d.getClass().getGenericSuperclass().toString();
Stringr=a.getClass().getSuperclass().toString();
System.out.println("對象超類:"+s);//獲取對象類的超類!
System.out.println("對象超類:"+r);//獲取對象類的超類!
}
}
classAnimal//動物超類!
{
}
classDogextendsAnimal//夠繼承動物!
{
}
⑥ JAVA如何判斷兩個類之間是否滿足繼承關系
Class中有個方法 public native boolean isAssignableFrom(Class<?> cls)用來判斷子類是否繼承於父類的或者父介面的。
你會這樣子寫:
Class clazz = ....;
clazz.isAssignableFrom(子類名稱);返回說明是掛號里的類的父類或父介面。
clazz.isAssignableFrom(子類名稱)里的子類名稱跟版本有關,好像是1.5以上的JDK這里的子類名稱都是使用的泛型編程。即傳的傳數是
class<T> 類型的,你用的時候自己斟酌下版本問題。
而常用的instanceof(class ..)是指該實例是否屬於掛號中的類的父類的一個實例。
如上面的例子:
class A{
}
public class B extends A{
public static void main(String[] args){
Class clazz = B.class;
Class class1 = A.class;
System.out.println(class1.isAssignableFrom(clazz));
if(class1.isAssignableFrom(clazz)){
System.out.println("A是B的父類");
}else{
System.out.println("A不是B的父類");
}
}
}
介面的話也一樣的:如下
public interface A {
}
public class B implements A{
public static void main(String[] args) {
Class clazz = B.class;
Class class1 = A.class;
System.out.println(class1.isAssignableFrom(clazz));
if(class1.isAssignableFrom(clazz)){
System.out.println("A是B的父類");
}else{
System.out.println("A不是B的父類");
}
}
}
你測試時只需要把extends A和implements A去掉那就是A不是B的父類或者父介面的情況。 這就是java反射機制的精髓啊
⑦ Java的IO操作中各種類的繼承關系是怎樣的
這是以前學習流時候的筆記,希望對你有用--------------------------------------------------------------------------------------------------IO流有三種分類方式:
一、按流的方向分為:輸入流和輸出流;
二、按流所處理的數據類型劃分為:位元組流和字元流;
三、按流的功能不同分為:節點流和處理流。
位元組流: 可以從/向一個特定的I/O設備讀/寫數據的流,成為位元組流。也稱為低級流。
InputStream/OutputStream 位元組
字元流
Reader,Writer
處理流: 實現對一個已存在的流的連接與封裝,通過所封裝的流的功能調用實現數據讀/寫功能的流。也稱高級流。
處理流-輸入流 字元輸入流:InputStreamWriter/ 輸入處理流:BufferedReader
處理流-輸出流 字元輸出流:OutputStreamWriter/ 輸出處理流:BufferedWriter PrintStream PrintWriterFileInputStream 讀取文件流
FileOutputStream寫文件流用高級流封裝低級液壓,看低級流指向的設備而決定操作的對象指向設備的流
System.in 標准輸入設備(從鍵盤輸入)
System.out 標准輸出設備(從控制台輸出)
FileInputSteam 文件輸入流
FileOutputStream 文件輸出流
⑧ java中的繼承關系
A答案本身就是有錯的,interface是定義介面,下邊就不能用extends,而應該用implements
B答案的作用是:son這個類繼承了Father這個類,就體現了繼承關系
C答案是先定義了一個抽象類:Colorable,下邊Shape這個類繼承了Colorable這個類。抽象類是可以被繼承的。也體現了繼承關系
D答案只是把Species的一個引用作為了Animal類的一個屬性。沒有體現繼承。而且跟繼承一點關系也沒有
E答案是Employee實現了Person介面,並會實現介面里的所有抽象方法。所以也是體現了繼承的
⑨ java中用來定義類間繼承關系的關鍵字是什麼
繼承extends的使用規則
繼承的特點
1.只支持單繼承
2.子類繼承得到父類的成員變數和成員函數,不能繼承父類的構造函數
3.子類可以編寫自己的成員變數和成員函數
4.同時修改多個子類的共同擁有的成員變數和成員函數(例如同時修改StudentExtends.java和TeacherExtends.java中的成員變數和成員方法)
5.子類的構造函數在調用時,必須先執行父類的構造函數,沒有顯性(super)的調用父類的構造函數時,子類構造函數默認調用父類無參數的構造方法super()
6.super調用構造函數必須位於第一句與this用法相同
⑩ java中繼承關系
B是子類啊大哥,你在試圖讓子類引用指向父類的instance,當然編譯不通過啊。你要麼強制類型轉換: B bb=(B) aa;