• 多态继承


    第一步我们新建一个接口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方法就可以了。

     

    这些笔记只是博主的一个课堂的笔记,还是有很多不足,欢迎留言批评指教。。

  • 相关阅读:
    如何优雅地结束线程的生命周期
    线程的interrupt()
    线程的join()方法
    守护线程Daemon
    使用多线程模拟一个银行叫号窗口
    多线程介绍
    十八、MySQL 数据排名查询某条数据是总数据的第几条
    spring cloud stream整合
    036线程进程(重要)
    035server端并发聊天
  • 原文地址:https://www.cnblogs.com/896240130Master/p/6069925.html
Copyright © 2020-2023  润新知