zoukankan      html  css  js  c++  java
  • 面向对象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();
    }
  • 相关阅读:
    php的rabbitmq扩展(未测试)
    rabbitmq安装
    windows操作系统安装jdk以及配置环境变量
    chrome设置user-agent
    pycharm中快捷键ctrl+c,ctrl+v,ctrl+f失效问题解决
    chrome设置user agent
    Pycharm鼠标滚动控制字体大小
    mouse事件实现可拖拽的div
    DOM事件委托
    !heap 手动查询内存泄漏
  • 原文地址:https://www.cnblogs.com/yangchan250/p/7009818.html
Copyright © 2011-2022 走看看