您好,登錄后才能下訂單哦!
多態(tài)的實現(xiàn)方式有哪些?
第一種實現(xiàn)方式:基于繼承實現(xiàn)的多態(tài)
基于繼承的實現(xiàn)機制主要表現(xiàn)在父類和繼承該父類的一個或多個子類對某些方法的重寫,多個子類對同一方法的重寫可以表現(xiàn)出不同的行為。多態(tài)的表現(xiàn)就是不同的對象可以執(zhí)行相同的行為,但是他們都需要通過自己的實現(xiàn)方式來執(zhí)行,這就要得益于向上轉型了。
public class MainJava {
public static void main(String[] args) {
//定義父類數(shù)組
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();
}
}
}
抽象類和普通類有何區(qū)別
抽象類和普通類最大的區(qū)別是,抽象類不能被實例化,需要繼承抽象類才能實例化其子類。
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");
}
}
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。