多态
多态定义:允许一个父类变量引用子类的对象;允许一个接口类型引用实现类对象。
多态的调用:使用父类的变量指向子类的对象;所调用的属性和方法只限定父类中定义的属性和方法,不能调用子类中特有的属性和方法,
多态主要应用为多态参数和多态对象
package JobTest;
abstract class Job {
public abstract void work();// 为了方便进行多态调用
}
class Teacther extends Job {
@Override
public void work() {
System.out.println("上课");
}
}
class Cookies extends Job {
@Override
public void work() {
System.out.println("做饭");
}
}
class Driver extends Job {
@Override
public void work() {
System.out.println("开车");
}
}
package JobTest;
public class JobTest {
public static void main(String[] args) {
Job a=new Teacther();//父类类型变量a指向子类对象teacther
Job b=new Cookies();//父类类型变量b指向子类对象Cookies
Job c=new Driver();//父类类型变量c指向子类对象Driver
a.work();
b.work();
c.work();
}
}
以上实例是简单使用多态实例,父类Job分别使用变量指向子类对象Teacher/Cookies/Driver;
如果一个类继承抽象类,那么必须重写抽象类中所有抽象方法(@Override)
接口
接口可以看做抽象类的特例
接口中只能定义抽象方法,接口可以看做行为的抽象。
接口中的方法只能是public
接口中变量为public static final
public interface Iwash { public abstract void wash(); } class Mun implements Iwash{ @Override public void wash() { System.out.println("手洗"); } } class Washer implements Iwash { @Override public void wash() { System.out.println("电机搅动"); } } public class TestWash { public static void main(String[] args) { Iwash w = new Mun(); w.wash(); } }
实例中建立一个Iwash接口,Mum和Wash都有wash这个行为,所以都有Iwash接口
接口用于在不同的类实例当中,共享通用行为,重用方法。
接口和多态的概念不是很难,但是在于灵活运用。