【无标题】多态与继承

1.继承

Java用关键字extends表示继承。关键字 extends 表明正在构造的新类派生于一个已存在的类。已存在的类称为超类(superclass),新类称为子类(subclass)。超类和子类是 Java 程序员最常用的两个术语。在设计类的时候,应该将通用的方法放在超类中, 而将具有特殊用途的方法放在子类中。

继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加新功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。继承主要解决的问题是:共性的抽取,实现代码复用

1.2 继承的语法

JAVA如果要表示继承间的关系要用extends关键字

修饰符 class 子类 extends 父类 {
// ...
}

继承要点

1、子类拥有父类非private的属性和方法。

2、子类可以拥有自己属性和方法,即子类可以对父类进行扩展。

3、子类可以用自己的方式实现父类的方法

super关键字

由于各种原因,父类与子类中可能出现相同名称的代码,但在这时子类是无法直接访问的,所以有了super关键字,它的作用是在子类方法中访问父类方法中的成员

注: 1. 只能在非静态方法中使用 2. 在子类方法中,访问父类的成员变量和方法。

super关键字和this关键字的区别

相同点:1. 都是Java中的关键字
2. 只能在类的非静态方法中使用,用来访问非静态成员方法和字段
3. 在构造方法中调用时,都必须是构造方法中的首条语句,并且不能同时存
不同点:1.this是对当前对象的引用,即调用实例方法的对象;super相当于子类对象对父类从父类那继承的对象的引用。
2.在非静态成员方法中,this用来访问自己本类的方法和属性,super用来访问从父类继承的方法和属性
3.在构造方法中this用来调用本类的构造方法,super用来调用父类构造方法,两个调用不能同时出现
4.构造方法中一定会存在**super(…)的调用,用户没有写编译器也会增加,但是this(…)**用户不写则没有
JAVA中不支持多继承。

1.多态

定义: 多态是同一个行为具有多个不同表现形式或形态的能力。多态是建立在继承的基础上的,一个父类对象可以产生多个不同的子类对象,根据这些子类对象的不同可以具备不同的方法,也就是说表现出了不同的形态即多态

2.必要条件

(1)多态必须继承父类

(2必须有重写

(3)必须由父类引用指向子类

3.重写

重写(override):也称为覆盖。重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

规则:1.子类在重写父类的方法时,一般必须与父类方法原型一致: 返回值类型 方法名 (参数列表) 要完全一致 2.被重写的方法返回值类型可以不同,但是必须是具有父子关系的 3.访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类方法被public修饰,则子类中重写该方法就不能声明为 protected 4.父类被static、private修饰的方法、构造方法都不能被重写。

注: 可以使用 @Override 注解来显式指定

重载和重写的区别 :重写不能修改参数列表;重写不能修改返回类型(构成父类与子类关系除外);重写不能对访问限定符做更严格的限定,但可以降低; 重载全部与之相反,重载必须修改参数列表,可以修改返回类型和访问限定符。

3.1 向上转型

向上转型:实际就是创建一个子类对象,将其当成父类对象来使用。

语法格式:父类类型 对象名 = new 子类类型()

向上转型的优点:让代码实现更简单灵活。

向上转型的缺陷:不能调用到子类特有的方法

3.2向下转型

将一个子类对象经过向上转型之后当成父类方法使用,再无法调用子类的方法,但有时候可能需要调用子类特有的

方法,此时:将父类引用再还原为子类对象即可,即向下转换。

4.多态的优缺点

优点:

1. 能够降低代码的 “圈复杂度”, 避免使用大量的 if - else

2.可扩展能力更强

缺点

多态缺陷:代码的运行效率降低

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值