• 8,多态


    //判断指向的类型符合什么类型的时候
    //判断的时候父类的对象必须写在子类的对象的下面
    //使用的场景:子类的种类有限,当传的类型需要进行其他操作,需要调用特有方法时

    if(a instanceof Cat)
            {
                Cat c = (Cat)a;
                c.catctMouse();
            }
    //类型提升  向上转型(转成父类型)
    //将父类的引用转成子类的引用(向下转型)
    //此操作不被允许,可以将父类的引用转为子类引用,不可以将父类的对象强转为子类的引用
    //多态始终是子类对象的操作
          
            Animal a=new Cat();//向上转型
    Cat c
    =(Cat)a;//向下转型

    在多态中,成员函数的特点(编译看左边,运行看右边)

    (1)编译的时候看引用的类型中是否有调用的方法,如果有,编译通过,没有,失败

    (2)在运行时,看对象的类中是否有调用的方法。

    涉及到面试的环节()

    在多态中,成元变量的特点:编译运行都看左边(引用)

    public class test{
    
    public static void main(String[] args) {
        fu f= new zi();
        System.out.println(f.s);
    }
    }
    class fu{
        String s="llll";
    }
    class zi extends fu{
        String s="aaa";
    
    }

    在多态中静态成员函数的特点,编译运行都看左边(父类运行父类,子类运行子类的)

    public class test{
        public static void main(String[] args) {
            fu f= new zi();
            f.m4();
        }
    }
    class fu{
        static void m4(){
            System.out.println("KKK");
        }
    }
    class zi extends fu{
        static void m4()
        {
            System.out.println("llll");
        }
    }

    多态主板实例(扩展槽的实现)

    package test;
    //电脑运行依附于主板(主板运行了,电脑就运行了)
    interface PCI{
        public void open();
        public void end();
    }
    public class test{
        public static void main(String[] args) {
            diannao d=new diannao();
            d.yunxing();
            d.usePCI(new netCard());    }
    }
    class zhuban{
        public void yunxing(){
            System.out.println("主板运行");
        }
        
    }
    class diannao{
        zhuban z=new zhuban();
        public void yunxing()
        {
            z.yunxing();
        }
        public void useNetcard(netCard n)
        {
                    n.start();
                    n.end();
        }
        public void usePCI(PCI p)
        {
            p.open();
            p.end();
        }
        
    }
    class netCard implements PCI{
        @Override
        public void open() {
            // TODO Auto-generated method stub
            System.out.println("网卡开启");
        }
        @Override
        public void end() {
            // TODO Auto-generated method stub
            System.out.println("网卡关闭");
        }
    }
  • 相关阅读:
    centos7刚安装解决网络问题
    python matplotlib的常用绘图方法
    python实现最小可编辑距离
    JDBC快速入门
    关于MYSQL常用操作查询语言
    3w字详解java集合
    ELK实时日志分析平台环境部署--完整记录(转)
    ELK简介(转)
    python格式化输出(% & format)
    ElasticSearch查询 搜索 | 更新 | 查询
  • 原文地址:https://www.cnblogs.com/exexex/p/8393016.html
Copyright © 2020-2023  润新知