Java面向对象三大特征

1.面向对象的第三大特性
     多态
 
   生活中的多态
      同一种事物,由于条件不同,则产生不同的结果
      事物的多种表现形态
    程序中多态
   同一个引用类型,使用不同的实例,执行不同的操作
    
  父类的引用  子类的实现
  //使用多态进行实例化
  Pet pet=new Dog();
  Pet pet=new Penguin();
  Pet pet=new Cat();
2.多态发生在继承关系中
3.多态实现的前提
   
   1.类与类之间存在继承关系
   2.类与接口之间存在实现关系(之后章节)
4.多态实现的步骤
    1.编写父类
 2.编写子类,一定要有子类重写父类的方法
 3.使用时,就可以使用父类的引用类型,子类的实例!!
   //使用多态进行实例化
  Pet pet=new Dog();
  Pet pet=new Penguin();
  Pet pet=new Cat();
5.多态实现的方式
   1.Pet pet=new Dog();
   2.使用父类作为方法的形参实现多态,
      调用具体方法传入实参作为子类的实例
   3.使用父类作为方法的返回值实现多态,
     定义方法的返回值为父类,调用方法的返回值为子类的实例
6.优点:程序的可扩展性
  缺点:使用多态进行实例化,实例化的对象只能调用子类重写父类的方法,
        子类特有的方法我们无法调用
  
  如何解决弊端?
  
     1.向上类型(自动类型转换)
      
    Pet pet=new Dog();
    
       好处:隐藏子类型,提供代码的可扩展型
    弊端:只能调用子类重写父类的方法,子类特有的方法我们无法调用
           2.向下类型(强制类型转换)
        int b=(int)9.8;
    
               Pet pet=new Dog();
        pet.eat();
    
      Dog dog=(Dog)pet;
 
                 dog.catchFlyDisc();
             好处:能调用子类特有方法
    弊端:向下类型有风险
                    容易发生异常
     java.lang.ClassCastException(类型转换异常)
     
     使用前进行判断,判断一个对象是否匹配另一个对象类型
      
      对象 instanceof  类型(类名)
 

    
posted @ 2018-07-23 12:48  elice丹  阅读(57)  评论(0)    收藏  举报