多态的实现方式有哪些?
第一种实现方式:基于继承实现的多态
基于继承的实现机制主要表现在父类和继承该父类的一个或多个子类对某些方法的重写,多个子类对同一方法的重写可以表现出不同的行为。多态的表现就是不同的对象可以执行相同的行为,但是他们都需要通过自己的实现方式来执行,这就要得益于向上转型了。
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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。