• 面向对象7:多态


    1.多态
           1.1多态:一个失误的多种形态
           1.2多态的表现
            行为(方法)多态:重写和重载
            引用多态(动态绑定):编译时的类型和运行时不一致的这种现象
                         动态绑定
            注意:引用多态存在继承关系
    
            自动类型转换
            char c=10;
            int a=c;
    
            强制类型转换    
            int a=10;
            char c=(char)a;
    
            向上转型
            父类=子类;
            Pet p = new Dog();
    
            向下转型
            子类 =(子类)父类;
            Dog d=(Dog) p;
            
            注意:java.lang.ClassCastException:类型转换异常
                父类的运行时类型跟要转成的子类的类型不一致
    
        1.3 多态【子类就是父类】
             为什么使用多态:
            提高程序可扩展性,可维护性,提高代码可重用性
    
            什么是多态:
            具有表现多种形态能力的特征 同一个实现接口,使用不同的实例而执行不同的操作          

        1.4实现多态的两种形式:
             a.使用父类作为方法形参实现多态
             public void play(F p){...};

             b.使用父类作为方法返回值实现多态
             public F getF(int type){...};

    //子类,圆形
    public class Circular extends Graph {
            private final double X=3.14;        //半径
            
            public Circular(double r){
                super(r);
            }
            
            public void getArea(){
                double m=(super.getLen()*X*X);
                System.out.println("圆的半径为"+super.getLen()+"
    面积为"+m);
            }
    
    
    //子类,长方形
    public class Rectangle extends Graph {
        private double weight;            //宽度
        
        public  Rectangle(double len,double weight){
            super(len);
            this.weight=weight;
        }
        
        public double getWeight(){
            return weight;
        }
        
        public void getArea(){
            double m=(super.getLen()*this.getWeight());
            System.out.println("长方形的长为"+super.getLen()+",宽为"+this.weight+"
    面积为"+m);
        }
    
    
    
    //父类
    public abstract class Graph {
        private double len;            //图形的边长
        
        public Graph(double len){
            this.len=len;
        }
        
        //获取长度
        public double getLen(){
            return len;
        }
        
        //抽象面向方法
        public abstract void getArea();
    }
  • 相关阅读:
    ECSHOP 2.5.1 二次开发文档【文件结构说明和数据库表分析】
    ECSHOP后台左侧添加菜单栏
    PHPstudy 2018 集成环境项目配置虚拟域名访问
    微擎左侧模块业务菜单修改
    ThinkPHP5使用阿里云OSS图片上传
    ThinkPHP5使用PHPExcel实现数据导出功能
    ThinkPHP5生成二维码图片与另一张背景图片进行合成
    原生PHP连接MySQL数据库
    数组的冒泡排序
    【原创诗歌】读仓央嘉措(下)
  • 原文地址:https://www.cnblogs.com/yangchan250/p/7009818.html
Copyright © 2020-2023  润新知