多态继承
第一步我们新建一个接口A类
package InterfaceText;
public interface A { //定义一个接口
public void g (); //定义接口方法
}
第二步:新建一个B类,这个B类实现A这个接口 并抽象化
package InterfaceText; public abstract class B implements A{ /* * zdy()是在B类自定义的一个方法 * 但不要忘记了他还实现了一个接口。 * 当调用这个B类的时候,要实现接口中的类。可以看到下面的第三步。他继承了B类。 */ public void zdy() { System.out.println("我是一个教授,我白天教书"); } }
第三步:我们新建一个Doctor1这个类并继承B这个类,因为继承B类这个类了,那这个B里面自定义的类属性也继承了,就不用重写了。
package InterfaceText;
public class Doctor1 extends B{
public void g() {
System.out.println("到了晚上我就睡觉");
}
}
第四步:我们在新建一个Doctor2 和第三步一样;
package InterfaceText;
public class Doctor2 extends B{
public void g() {
System.out.println("到了晚上我就去玩");
}
}
第五步:我们新建一个测试类main
package InterfaceText;
public class main1 {
public static void main(String[] args) {
Doctor1 d1 = new Doctor1();
d1.zdy();
d1.g();
System.out.println("--------------------");
Doctor2 d2 = new Doctor2();
d2.zdy();
d2.g();
}
}
我们看一下运行结果:
白天都是教书,但晚上就有很多种“态"了。
那这样问题就来了,如果有很多个教授是不是要写很多个Doctor3,4,5,6...个这样的类呢,显然这样不好;
那么我们再改进一下代码;我们不写Doctor这样的类了。我们直接在main这个测试类里写一个方法;
package InterfaceText;
public class main1 {
public static void main(String[] args) {
Doctor1 d1 = new Doctor1();
d1.zdy();
d1.g();
System.out.println("--------------------");
Doctor2 d2 = new Doctor2();
d2.zdy();
d2.g();
System.out.println("--------------");
B B1= new B(){
public void g() {
System.out.println("我晚上什么都不干");
}
};
B1.zdy();
B1.g();
}
}
上面蓝色加粗的代码块里 我们直接调用 B方法就可以了。
这些笔记只是博主的一个课堂的笔记,还是有很多不足,欢迎留言批评指教。。