面向对象基础篇 – 多态

面向对象基础篇 – 多态

  • 在JAVA 中对象是可以“向下”兼容的 也就是说,我可以通过父类声明创建一个子类对象
Father son = new Son();
  • 但是不能通过子类声明去创建父类对象

通俗来说:

多态就是将子类的身份提高到了父类的身份,但是并不会改变子类对象本质

多态调用成员变量
  • 如果父类有,则调用父类成员变量
  • 如果子类父类都有,依旧调用父类成员变量
  • 如果父类没有,就算子类有也不能调用

也就是,多态下,子类成员变量都不能使用

多态调用成员函数
  • 如果父类有,子类未重写,则调用父类
  • 如果子类重写,则调用子类
  • 如果父类没有,则不能调用

也就是不能调用子类特有方法

多态的对象类型转换
//当通过多态的方法创建一个对象时
//如:
Father son = new Son();
//此时 son 是不能够再使用自己相较于父类独有方法和属性的
//此时如果要使用,那就要对该对象进行类型转换
  • 类型转化只能将子类转换为他自己本省的对象类型
//描述动物这种事物的共性eat
abstract class Animal{
    abstract void eat();
}
//描述dog这类事物
class Dog extends Animal{
       void eat(){
           System.out.println("啃骨头");
       }
       void lookHome(){
           System.out.println("看家");
       }
}
//描述小猫
class Cat extends Animal{
      void eat(){
         System.out.println("吃鱼");
      }
      void catchMouse(){
         System.out.println("抓老鼠");
      }
}
/*
Animal dog = new Dog(); 形成多态
Animal cat = new Cat(); 形成多态
此时我要让狗展示出不同于其他动物的o特有属性时 
需要强制类型转换
Dog dog1 = (Dog) dog ;//注意狗只能是狗

Cat cat1 = (Cat) dog;//报错,无法转换
  • 如何判断,对象的类型

这里我们使用到关键字 instanceof

//依旧是上面的程序
System.out.println(dog instanceof Dog);// true
System.out.println(dog instanceof Cat);// false
//因此在在类型转换时,我们可以首先判断他是不是这个对象类型,再进行转换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值