Java 介面 多型概念 知識
阿新 • • 發佈:2019-01-10
一、介面
概念:可以理解為時一個特殊的抽象類,當抽象類中的方法都是抽象的,那麼該類可以通過介面的形式來定義
class:用於定義類
interface 用於定義介面
語法:訪問許可權修飾符 interface 介面名{
//全域性常量
//抽象方法
}
介面中成員修飾符是固定的
成員變數:public static final
成員函式:public abstract
如果不寫 系統會預設加上public static final,public abstract,建議寫上
implements :實現
類與介面的關係:實現
繼承:extends
特點:
1.介面是特殊的抽象類,特殊在 介面中所有子類都是常量,方法都是抽象的
2.介面允許多實現,彌補單繼承,因為介面中的抽象類沒有方法體 實現誰都行 不衝突
3.Java中允許單繼承 提高了程式的擴充套件性
4.介面與介面之間 也有關係 介面繼承可以繼承多個介面 因為是抽象的
介面可以用來多實現
類與介面之間是實現關係 而且類繼承一個類同時 可以實現多個介面
介面與介面之間可以有多繼承關係
介面的好處
它是對外暴露的規則 提高了程式的擴充套件性
封裝 保證了程式的安全性
介面的本質
從介面設計的角度而言 介面中定義了一套規則和標準
二、多型:
例項程式碼(介面與多型):
class Demo4
{
public static void main(String[] args)
{
Compute x=new compute1();
function(x);
Compute s=new compute2();
function(s);
Compute y=new compute3();
function(y);
Compute w=new compute4();
function(w);
}
public static void function(Compute c){
System.out.println(c.computer(10,5));
}
}
interface Compute
{
public abstract int computer(int n,int m);
}
class compute1 implements Compute
{
int n;
int m;
public void Sum(int n,int m){
this.n=n;
this.m=m;
}
public int computer(int n,int m){
return n+m;
}
}
class compute2 implements Compute
{
int n;
int m;
public void jian(int n,int m){
this.n=n;
this.m=m;
}
public int computer(int n,int m){
return n*m;
}
}
class compute3 implements Compute
{
int n;
int m;
public void cheng(int n,int m){
this.n=n;
this.m=m;
}
public int computer(int n,int m){
return n-m;
}
}
class compute4 implements Compute
{
int n;
int m;
public void chu(int n,int m){
this.n=n;
this.m=m;
}
public int computer(int n,int m){
return n/m;
}
}
定義:某一類事物的多種存在形式
多型的前提:
1.父類引用指向子類物件
2.必須是類與類之間有關係 要麼繼承 要麼實現
3.子類存在重寫
優點:提高程式的擴充套件性
缺點:但是隻能使用父類的引用訪問父類中的成員
物件的向上轉型與向下轉型
Compute x=new compute1(); 向上
compute1 y=(compute1 )x; 向下
注:多型轉的是父類引用 指向了自己的子類物件是 該應用可以被提升 也可以被強轉
多型至始至終 都是子類物件在做著變化
instanceof if(an instanceof cat){} 用來執行時指出物件是否是特定類的一個例項;
如果是屬於型別的例項 就返回TRUE 反之則返回false
instanceof 不常用
1.當子類有限時
2.當傳輸的型別需要進行其他操作
在多型狀態下:對成員方法的呼叫 編譯看左邊(父類) 執行看右邊(子類)
對成員變數的呼叫 編譯看左邊 執行看左邊
靜態成員 編譯看左邊(父類) 執行看左邊(父類)
概念:可以理解為時一個特殊的抽象類,當抽象類中的方法都是抽象的,那麼該類可以通過介面的形式來定義
class:用於定義類
interface 用於定義介面
語法:訪問許可權修飾符 interface 介面名{
//全域性常量
//抽象方法
}
介面中成員修飾符是固定的
成員變數:public static final
成員函式:public abstract
如果不寫 系統會預設加上public static final,public abstract,建議寫上
implements :實現
類與介面的關係:實現
繼承:extends
特點:
1.介面是特殊的抽象類,特殊在 介面中所有子類都是常量,方法都是抽象的
2.介面允許多實現,彌補單繼承,因為介面中的抽象類沒有方法體 實現誰都行 不衝突
3.Java中允許單繼承 提高了程式的擴充套件性
4.介面與介面之間 也有關係 介面繼承可以繼承多個介面 因為是抽象的
介面可以用來多實現
類與介面之間是實現關係 而且類繼承一個類同時 可以實現多個介面
介面與介面之間可以有多繼承關係
介面的好處
它是對外暴露的規則 提高了程式的擴充套件性
封裝 保證了程式的安全性
介面的本質
從介面設計的角度而言 介面中定義了一套規則和標準
二、多型:
例項程式碼(介面與多型):
class Demo4
{
public static void main(String[] args)
{
Compute x=new compute1();
function(x);
Compute s=new compute2();
function(s);
Compute y=new compute3();
function(y);
Compute w=new compute4();
function(w);
}
public static void function(Compute c){
System.out.println(c.computer(10,5));
}
}
interface Compute
{
public abstract int computer(int n,int m);
}
class compute1 implements Compute
{
int n;
int m;
public void Sum(int n,int m){
this.n=n;
this.m=m;
}
public int computer(int n,int m){
return n+m;
}
}
class compute2 implements Compute
{
int n;
int m;
public void jian(int n,int m){
this.n=n;
this.m=m;
}
public int computer(int n,int m){
return n*m;
}
}
class compute3 implements Compute
{
int n;
int m;
public void cheng(int n,int m){
this.n=n;
this.m=m;
}
public int computer(int n,int m){
return n-m;
}
}
class compute4 implements Compute
{
int n;
int m;
public void chu(int n,int m){
this.n=n;
this.m=m;
}
public int computer(int n,int m){
return n/m;
}
}
定義:某一類事物的多種存在形式
多型的前提:
1.父類引用指向子類物件
2.必須是類與類之間有關係 要麼繼承 要麼實現
3.子類存在重寫
優點:提高程式的擴充套件性
缺點:但是隻能使用父類的引用訪問父類中的成員
物件的向上轉型與向下轉型
Compute x=new compute1(); 向上
compute1 y=(compute1 )x; 向下
注:多型轉的是父類引用 指向了自己的子類物件是 該應用可以被提升 也可以被強轉
多型至始至終 都是子類物件在做著變化
instanceof if(an instanceof cat){} 用來執行時指出物件是否是特定類的一個例項;
如果是屬於型別的例項 就返回TRUE 反之則返回false
instanceof 不常用
1.當子類有限時
2.當傳輸的型別需要進行其他操作
在多型狀態下:對成員方法的呼叫 編譯看左邊(父類) 執行看右邊(子類)
對成員變數的呼叫 編譯看左邊 執行看左邊
靜態成員 編譯看左邊(父類) 執行看左邊(父類)