面向对象7:多态

Posted 孤独患者xy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象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 多态【子类就是父类】
         为什么使用多态:
        提高程序可扩展性,可维护性,提高代码可重用性

        什么是多态:
        具有表现多种形态能力的特征 同一个实现接口,使用不同的实例而执行不同的操作        


//子类,圆形
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()+"\n面积为"+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+"\n面积为"+m);
    }



//父类
public abstract class Graph {
    private double len;            //图形的边长
    
    public Graph(double len){
        this.len=len;
    }
    
    //获取长度
    public double getLen(){
        return len;
    }
    
    //抽象面向方法
    public abstract void getArea();
}

 

以上是关于面向对象7:多态的主要内容,如果未能解决你的问题,请参考以下文章

面向对象7:多态

软构笔记-7-面向对象的编程

7 面向对象的三大特征

设计模式面向对象 - 多态 ( 面向对象 3 要素 | 多态 提升 程序扩展性 | 多态示例 )

面向对象

PHP面向对象