重新认识Java(9_1)————抽象类与多态

抽象类是一个特殊的类。

abstract:修饰符,抽象的意思

修饰类:抽象类。

修饰方法:抽象方法。

特点:

  1. 抽象类不能实例化
  2. 抽象方法要在抽象类中
  3. 抽象类必然有子类,子类想要创建对象,子类将继承的所有抽象方法全部覆盖。

如果只覆盖了部分抽象方法,那么子类依然是抽象类。

 成员:

  1. 抽象方法
  2. 成员变量,成员方法,构造方法

 

 抽象类中可以没有抽象方法,目的该类不能实例化。

注意:

abstract不能和final和private一起使用。

abstract不能和static修饰的抽象方法一起使用。

 

什么时候使用抽象类?

  1. 当不想要类能实例化时,可以定义为抽象类。
  2. 所有子类都需要将继承的方法进行覆盖,那么父类该方法应为抽象方法,那么该类是抽象类。

 

多态

指一个对象具备多种形态。

例如 :生活中水:  固态  液态  气态

        Class  动物{}

Class  狗  extends 动物{}

创建对象时:    狗   d = new 狗();  //本态

                                                           动物   d = new  狗();  //多态

前提条件:必须有继承或者是实现。

表现形式:父类型引用指向自己的子类对象

好处:提高了代码的扩展性

弊端:不能访问子类特有的成员。

在方法中:参数中可以接收Animal类型,与可以接收Animal的子类

 

多态的类型转换:

 

向上转型(类型提升):  父类型引用指向子类型(小———>   大)                     Animal  a  = new  cat();

向下转型(强制类型转换):将父类型引用转成子类型 (想要访问子类特有的方法时)(大———>   小)

注意:类型转换时,改变的是引用称呼,一会是父类型,一会是子类型

              而对象本身由始至终都没有改变。

Animal a = new Animal();

Cat c = (Cat)a;

编译通过,运行出现ClassCastException异常。

instanceof:比较运算符,结果为boolean

 比较是否是指定的类型

 

多态中成员的特点:

          多态形式创建的对象:

               1. 无论是静态成员还是非静态成员,编译器时期都看父类

               2.对于成员方法,编译通过,运行的是子类的结果

               3.对于静态方法,静态变量,变量,编译通过运行的都是父类结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值