日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java中的继承性特性

發布時間:2023/12/19 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中的继承性特性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  繼承性是java中的第二特性之一。而繼承性最為關鍵的地方為:代碼重用性的問題,利用繼承性可以從已有的類中繼續派生出新的子類,也可以利用子類擴展出更多的操作功能。

  繼承性的實現代碼為:class 子類 ?extends ?父類{ }

  有以下3點說明:

  1、對于extends而言,需要不斷的開展開來,但是為了理解上的方便,這些統一稱之為:繼承;

  2、子類又稱之為派生類;

  3、父類又稱之為超類(Super class);

以下代碼為子類繼承父類的屬性及方法

class Person{
  private String name;
  private int age;

  public Person() {}
  public Person(String name,int age){
    this.name = name;
    this.age = age;
  }

  public void setName(String name){
    this.name = name;
  }
  public void setAge(int age){
    this.age = age;
  }

  public String getName(){
    return this.name;
  }
  public int getAge(){
    return this.age;
  }
  }
}
  class Student extends Person {
   private String school;
   public void setSchool(String school){
    this.school = school;
  }
  public String getSchool(){
    return this.school;
  }
}

  public class School{
  public static void main(String args[]){
    Student stu = new Student();
    stu.setName("zhangsan");
    stu.setAge(123);
    stu.setSchool("大學");
    System.out.println("名字" + stu.getName() + ",年齡" + stu.getAge()+ stu.getSchool());
  }
}

從這中間可以得到以個結論:

  子類在實際中的運用中,是將父類定義得更加具體化的一種手段。

?

在繼承的使用中,有三大限制,這些在實際的運用及編寫代碼的時候需要多加注意:

一、繼承不可以多重繼承,但是可以多層繼承。

子類與父類的使用如下:

class A{
  public void fun(){
    System.out.println("這就是A");
  }
}
class B extends A{
  public void fun(){
    System.out.println("這就是B");
  }
}
class C extends A{
  public void fun(){
    System.out.println("這就是C");
  }
}
class New1{
  public static void main(String args[]){
    B b1 = new B();
    b1.fun();
    C c1 = new C();
    c1.fun();
  }
}

二、在子類在繼承父類時,嚴格來說會繼承中,但是在父類多有的私有操作屬于中稱之為隱形繼承。所有的非私有操作屬于顯示屬性。

class A {

???????? private String msg;

???????? public void setMsg(String msg) {

???????? ??? this.msg = msg;

???????? }

???????? public String getMsg() {

???????? ??? return this.msg;

???????? }

}

class B extends A {??????????????????????????????????????????????????????????????? // 繼承自A類

}

public class Demo {

public static void main(String args[]) {

???????? ??? B b = new B();

???????? ??? b.setMsg("Hello");???????????????????????????????????????? // 設置msg屬性,屬性通過A類繼承

???????? ??? System.out.println(b.getMsg());?? // 通過子類對象取得msg屬性

  }

}

三、在子類構造前一定會默認調用父類的構造(默認使用無參構造),以保證父類的對象先實例化,子類對象后實例化。

觀察實例化對象操作:
class A {
  public A() { // 父類提供的無參構造方法
    System.out.println("A、A類的構造方法!");
  }
}
class B extends A { // B是子類繼承父類A
  public B() { // 定義子類的構造方法
    System.out.println("B、B類的構造方法!");
  }
}
public class Demo {
  public static void main(String args[]) {
    new B(); // 實例化子類對象
  }
}

子類隱含語句:
class B extends A { // B是子類繼承父類A
  public B() { // 定義子類的構造方法
  super() ; // 父類中有無參構造時加與不加無區別,如果編寫則必須出現在首行
  System.out.println("B、B類的構造方法!");
}

父類不提供無參構造方法:
class A {
  public A(String title) { // 父類提供的有參構造方法
    System.out.println("A、A類的構造方法,title = " + title);
  }
}
class B extends A { // 定義子類B
  public B(String title) { // 子類提供有參構造
    super(title); // 明確調用父類構造,否則將出現編譯錯誤
    System.out.println("B、B類的構造方法!");
  }
}
public class Demo {
  public static void main(String args[]) {
    new B("Hello"); // 實例化子類對象
  }
}

?

方法覆寫:

特產主要特征:子類可以根據父類已有的功能進行功能的擴展,但是在子類定義屬性或方法時,可以出現定義的屬性或方法與父類同名的情況,這樣的操作成為覆寫。

class A {

???????? public void fun() {????????? // 在父類中定義的方法

?????????????????? System.out.println("A類中的fun()方法。") ;

???????? }

}

class B extends A {?????????????????????????? // 定義子類,此時沒有覆寫任何方法

???????? public void fun() {????????? // 此處為覆寫

?????????????????? System.out.println("B類中的fun()方法。") ;

???????? }

}

class C extends A {

???????? public void fun() {????????? // 此處為覆寫

?????????????????? System.out.println("C類中的fun()方法。") ;

???????? }

}

public class TestDemo {

???????? public static void main(String args[]) {

?????????????????? B b = new B() ;????????????? // 實例化子類對象

?????????????????? b.fun() ;???????????????????????? // 調用fun()方法,此時方法被覆寫,所以調用被覆寫過的方法

?????????????????? C c = new C() ;????????????? // 實例化子類對象

?????????????????? c.fun() ;????????????????????????? // 調用fun()方法,此時方法被覆寫所以調用被覆寫過的方法

???????? }

}

?

?

方法重載與重寫的區別

區別?    重載        ? 覆寫

英文單詞  Overloading ? ??    Override

發生    發生在一個類里面   發生在繼承關系中

定義    方法名稱相同、參數  方法名稱相同、參數類型、個數相同、方法返回值相同

?      ?的類型及個數不同

極限    沒有權限的限制    被覆寫的方法不能擁有比父類更為嚴格的訪問控制限制

?

區別    this                      ? super

功能    調用本類構造,本類方法,本類屬性        子類調用父類構造,父類方法,父類屬性

形式    先查找本類中是否存在有指定的調用結構,     不查找子類,直接調用父類操作

特殊    表示本類的當前對象               空

?

轉載于:https://www.cnblogs.com/Zhuoshengda/p/7255805.html

總結

以上是生活随笔為你收集整理的Java中的继承性特性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。