继承者们的故事

Java的三大特性之一继承

昨天自己复习继承的内容,所以写下记录,如果有不对的请指出,我猪肉佬感激不尽。

继承概念

在已知类的基础上创建新类,新类可以创建新的属性方法,也可以继续使用父类的方法;
有几点要注意:

  1. 子类继承父类,拥有父类所有方法和属性,但是父类中用private修饰的,仅仅是拥有,不能使用;打个比喻,就是儿子继承父亲的家产,父亲所有的东西都给儿子,钱啊,房子啊儿子都可以用,都是儿子的,可是!父亲自己私人的东西只能自己用,儿子只能有,但是不能用,至于什么东西,我现在还没想到。
  2. 子类创建属于自己方法和属性,这也是对父类的拓展,代码的扩展;
  3. 子类可以通过自己的方式重写父类的方法;

不得不提的抽象和接口

先说说抽象类,抽象,就是一个事物的概念的描述,打个比喻:人!人有的共同的描述肤色,头发,五官,身高等等基本信息;抽象类用abstract修饰类,如果一个类中有抽象方法,那么这个类也是抽象类。抽象类和普通类的最大区别是不能实例化,为什么?抽象类可以有非抽象的方法,例如构造方法,有构造方法就可以实例化了呀,为什么不行?!这个真不行,不信你自己试试new它一下,Java在设计的时候就是为了继承而设计。抽象类的目的就是为实现多态中的共同点,抽象类的构造器会在子类实例化时调用,因此它也是用来实现多态中的共同点构造。打个比喻:你要去买水果,但是具体买什么水果,你不知道啊。所以抽象类不可以实例化。

然后是接口,在Java8之前接口时完全的抽象类,Java8之后就不同了,升价了,有面了。接口和抽象类一样,不能实例化;接口的方法和属性默认时public修饰,不能用private 和 protect 修饰,如果你私藏保护,不给人实现这个方法,那么创建这个方法就没有意义。接口的属性是static+ final 修饰,也就是接口不能有自己成员变量。

总结:
不同点:

  1. 抽象类是继承的,接口是实现的。继承只能单继承,接口可以实现多个;
  2. 抽象类可以有抽象方法和非抽象方法;接口不能有实现方法;
  3. 接口不能有成员变量,抽象类可以有抽象变量;
  4. 接口的修饰符只能是public,抽象类可以是其他修饰符;

相同点:

  1. 抽象类和接口都是不可以实例化的,只能由子类继承实现;

super关键字

子类继承父类,子类的初始化必须调用父类的构造方法,super调用父类的构造方法,从而完成初始化操作。

子类如果想调用父类的其他方法,也可以使用super调用;

重写和重载区别

重写(Override)

重写发生在父类和子类之间,两个类之间,为了满足l里氏替换原则,子类要注意几点:

  1. 子类重写方法访问修饰符必须要等于或大于父类方法;
  2. 子类方法的返回值必须是父类方法返回值类型或其子类型;
  3. 子类方法抛出的错误必须是父类抛出异常类型或为其子类型;
  4. 重写的方法,方法名,参数类型,参数个数也必须和父类方法一致;

重载(Overload)

重载发生在同一个类中,要求必须是方法名相同,但是参数类型,个数不同,要注意的是,返回值类型并不重要,虚拟机不会因为返回值类型不同而区分出两个方法;

链接

链接: 深入了解抽象类和接口.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值