Java多态

Java多态

<1>多态:

事物存在多种体现形式。

父类的引用指向了子类对象。

接口的引用指向了实现类的对象。

// 动物(Animal) 猫(Cat) 狗(Dog)
              // 创建一个Cat对象
              Cat cat = new Cat();
              // 创建一个Dog对象
              Dog dog = new Dog();
              Animal a1 = new Animal();
              Animal a2 = cat; //多态
              Animal a3 = dog;
<2>多态的好处

提高代码的扩展性,使用多态作为参数,可以提高参数传递的灵活性。

<3>多态的前提:

必须要有关系,继承或者实现。

要有重写或者实现抽象方法。

<4>不同的对象可以访问的成员

(1)父类 对象名=new 父类();

只能访问父类中的成员

(2)子类 对象名=new 子类();

可以访问从父类继承的成员,访问重写后的方法和子类自定义的成员

(3)父类 对象名=new 子类(); //多态

可以访问父类中的成员,和子类重写的方法。不能访问子类中特有的方法和属性

<5>类型转换:(不论是向上转型还是向下转型,转的都是子类对象)

(1)向上转型:隐式转型,将子类类型隐藏。就不能访问子类中特有的方法

示例如下:

Dog dog=new Dog();
// 把狗提升成动物类型
Animal a=dog;
// a 只能访问Animal中的成员和重写后的方法,不能访问Dog类中特有的方法
(2)向下转型:强制转型,目的就是为了访问子类中特有的方法

示例如下:

 //向下转型的目的就是为了a对象能够访问特有的方法
// 向下转型之前必须使用instanceof关键字判断,此对象是否属于转成的类型 
          Dog dog=new Dog();
          // 把狗提升成动物类型
          Animal a=dog;
              boolean flag=a instanceof Dog;
              if(flag){
                   Dog  hsq=(Dog)a;
                   System.out.println(hsq);	
              }else{
                     System.out.println("不能转换");
              }
              // 将 obj 向下转型为String对象
              Object obj=new String("abc");
              if(obj instanceof  String){
                     String s=(String)obj;
                     System.out.println(s);
              }














  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值