您好,登錄后才能下訂單哦!
多態的實現方式有哪些?
第一種實現方式:基于繼承實現的多態
基于繼承的實現機制主要表現在父類和繼承該父類的一個或多個子類對某些方法的重寫,多個子類對同一方法的重寫可以表現出不同的行為。多態的表現就是不同的對象可以執行相同的行為,但是他們都需要通過自己的實現方式來執行,這就要得益于向上轉型了。
public class MainJava {
public static void main(String[] args) {
//定義父類數組
Wine[] wines = new Wine[2];
//定義兩個子類
Test1 test1 = new Test1();
Test2 test2 = new Test2();
Wine win e = new Wine();
//父類引用子類對象
wines[0] = test1;
wines[1] = test2;
for(int i = 0 ; i < 2 ; i++){
System.out.println(wines[i].toString() + "--" + wines[i].drink());
}
System.out.println("-------------------------------");
System.out.println(test1.toString() + "--" + test1.drink());
System.out.println(test2.toString() + "--" + test2.drink());
}
public static class Wine {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String drink(){
return "喝的是 " + getName();
}
public String toString(){
return null;
}
}
public static class Test1 extends Wine{
public Test1(){
setName("Test1");
}
public String drink(){
return "喝的是 " + getName();
}
public String toString(){
return "Wine : " + getName();
}
}
public static class Test2 extends Wine{
public Test2(){
setName("Test2");
}
public String drink(){
return "喝的是 " + getName();
}
public String toString(){
return "Wine : " + getName();
}
}
}
抽象類和普通類有何區別
抽象類和普通類最大的區別是,抽象類不能被實例化,需要繼承抽象類才能實例化其子類。
public abstract class AbstractClassExample {
protected int x;
private int y;
public abstract void func1();
public void func2() {
System.out.println("func2");
}
}
public class AbstractExtendClassExample extends AbstractClassExample {@Override
br/>@Override
System.out.println("func1");
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。