繼承(extends)與介面( implements)
繼承(extends)與介面( implements)
類,介面與陣列同為Java中的三大引用方法,這裡剛學到繼承,先來說下繼承。
繼承就是兩個類:通過繼承這個方法,使得子類可以繼承父類的屬性和方法。
- 子類可以呼叫父類中的方法和屬性
- 子類可以新增方法和屬性作為補充
- 子類可以重寫父類中的方法,前提是其中的返回值型別,方法名,引數型別(個數,順序)完全一樣
- 一個子類只能有一個父類(類似於一個兒子只能有一個老爸)
例子:
這是父類
package helloword;
public class Father {
public int a;
public int b;
public String name;
public void study() {
System.out.println(name + "的英語六級的成績為" + a);
}
public int count(int a, int b) {
return a+b;
}
}
這是子類
package helloword;
public class Son extends Father{
//重寫父類的方法
public void study() {
System.out.println(name + "四級考試成績為" +b);
}
public int count(int a, int b) {
return a-b; //加變減
}
//子類對父類做補充
public void lazzy() {
System.out.println("奔哥英語免修");
}
public static void main(String[] args) {
Son s = new Son();
s.a = 493;
s.b = 425;
s.name = "韓奔";
s.study();
s.lazzy();
System.out.println("奔哥的英語四級比英語六級的分數低了"+s.count(s.a,s.b));
}
}
輸出的結果為:
韓奔四級考試成績為425
奔哥英語免修
奔哥的英語四級比英語六級的分數低了68
以上便可以體現繼承的特徵。
繼承之中還分有向上轉型和向下轉型,先來說向上轉型(自動轉型):
格式: 父類 物件名 = new 子類();
自動轉型是子類轉型為父類,當你用轉型後的物件呼叫方法它是從父類找到子類,所以子類如果重寫了父親類的方法,它優先呼叫子類中重寫的方法。
程式碼如下:
package hello;
//父類
public class Father {
public void study() {
System.out.println("華理404就旭哥有物件");
}
}
//子類
package hello;
public class Son extends Father{
public void study() {
System.out.println("最帥的輝哥還是單身");
}
public static void main(String[] args) {
Father m = new Son();
m.study();
}
}
輸出結果:
最帥的輝哥還是單身
以上便是向上轉型。
接著便是向下轉型:
格式 子類 物件名 = (子類) 要轉型的物件名;
例子:
package hello;
//父類
public class Father {
public void study() {
System.out.println("華理404就旭哥有物件");
}
public void lazzy() {
System.out.println("華理機械就一個院士");
}
}
//子類
package hello;
public class Son extends Father{
public void giveup() {
System.out.println("皇族永不放棄");
}
public void study() {
System.out.println("最帥的輝哥還是單身");
}
public static void main(String[] args) {
//建立一個Son型別的物件s
Son s = new Son();
s.study();
//強制將m物件轉為Father型別
Father m = new Son();
m.lazzy(); //Son中沒有lazzy
m.study();
Son un = (Son)m;
un.giveup();
}
}
輸出結果:
最帥的輝哥還是單身
華理機械就一個院士
最帥的輝哥還是單身
皇族永不放棄
介面( implements)
介面與類有相同也有不同:
- 介面在寫的時候,其中的方法全部都是沒有內容的
- 要想呼叫介面,就要重寫介面中的所有方法
- 介面中的屬性要在定義的時候直接賦值,而且在呼叫時不可更改
- 一個類可以呼叫多個介面
- 介面沒有建構函式,不可以建立物件
- 通常定義介面屬性的時候屬性名要大寫,方便區分
例子:
public interface Teacher {
public String NAME = "王東"; //初始定義時賦值
public void math(int a,int b);
}
public class Student implements Teacher{
public void math(int a,int b){
System.out.println("一加一等於" + (a+b));
}
public static void main(String[] args) {
System.out.println("數學課老師的名字為"+Teacher.NAME);
Student ui = new Student();
ui.math(1,1);
}
}
輸出結果:
數學課老師的名字為王東
一加一等於2
相關文章
- 介面是否可繼承(extends)介面? 抽象類是否可實現 (implements)介面? 抽象類是否可繼承具體類(concrete class)?繼承抽象
- JavaScript extends 繼承JavaScript繼承
- java繼承extendsJava繼承
- 淺談java中extends與implements的區別Java
- 繼承與介面 (轉)繼承
- Java 自學 - 介面與繼承 介面Java繼承
- Flutter Dart語法(1):extends 、 implements 、 with的用法與區別FlutterDart
- TypeScript 介面繼承TypeScript繼承
- 多繼承 與 多重繼承繼承
- java啟動執行緒時 extends與implements的一個差異Java執行緒
- Java中介面與繼承的區別Java繼承
- TypeScript 介面繼承類TypeScript繼承
- Java繼承和介面Java繼承
- Java基礎10 介面的繼承與抽象類Java繼承抽象
- 繼承與派生繼承
- odoo 繼承(owl繼承、web繼承、view繼承)Odoo繼承WebView
- Java介面之間的繼承Java繼承
- C#中介面的繼承C#繼承
- JAVA介面繼承、抽象類等Java繼承抽象
- 類的繼承,介面的使用繼承
- C#虛基類繼承與介面的區別C#繼承
- 澄清Java語言介面與繼承的本質(轉)Java繼承
- extends多個介面
- Maven 聚合與繼承Maven繼承
- 繼承與多型繼承多型
- Maven聚合與繼承Maven繼承
- 繼承與組合繼承
- Java:類與繼承Java繼承
- 原型,繼承——原型繼承原型繼承
- 菱形繼承,虛繼承繼承
- javascript - 繼承與原型鏈JavaScript繼承原型
- java繼承與多型Java繼承多型
- class語法與繼承繼承
- Java的類與繼承Java繼承
- Maven--繼承與聚合Maven繼承
- 為啥要繼承一個空介面繼承
- C# OOP:繼承,介面和抽象類C#OOP繼承抽象
- C++繼承詳解:共有(public)繼承,私有(private)繼承,保護(protected)繼承C++繼承