多态的实现方式有哪些?php
第一种实现方式:基于继承实现的多态java
基于继承的实现机制主要表如今父类和继承该父类的一个或多个子类对某些方法的重写,多个子类对同一方法的重写能够表现出不一样的行为。多态的表现就是不一样的对象能够执行相同的行为,可是他们都须要经过本身的实现方式来执行,这就要得益于向上转型了。git
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(); } } }
抽象类和普通类有何区别程序员
抽象类和普通类最大的区别是,抽象类不能被实例化,须要继承抽象类才能实例化其子类。github
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 {br/>@Override
public void func1() {
System.out.println("func1");
}
}面试