继承-------面向对象重要思想之一

1、引入继承

         以上两个程序经过观察代码可发现,存在了大量的重复。比如每个中都有name,age成员变量,都有eat,sleep两个成员方法。如何解决呢?

2、继承的概念

        继承是面向对象思想一个重要的特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的成员变量及方法,此外,还可以增加新的属性方法。

继承主要解决的问题是:进行共性抽取,实现代码复用

eg:其中Animal称为 父类,基类,超类

            Dog,Cat称为 子类,派生类

3、继承的语法

借助extends关键字。 

语法: 修饰符  class  子类  extends  父类{

             }

-> 子类继承父类的成员变量,成员方法

-> 子类继承父类后,必须添加自己特有的成员,体现出与父类的不同

eg:Dog3,Cat3两个子类均继承了父类Animal。

 4、父类成员访问

4-1 子类访问父类的成员变量

4-1-1 子类与父类无同名的成员变量

-> 如果 子类与父类不存在 同名的成员变量, 则访问父类继承下来的。如果父类也没有时,则编译报错。

4-1-1 子类与父类有同名的成员变量

在子类方法中或者通过子类访问父类时:

-> 如果 子类与父类存在 同名的成员变量, 优先访问子类自己的成员变量

 4-2 子类访问父类的成员方法

4-2-2 成员方法 名字不同

-> 成员方法名字不同时,在子类方法中或通过子类对象访问方法时,访问父类继承下来的。如果父类也没有时,则编译报错。

4-2-2 成员方法 名字相同

-> 如果 子类与父类存在 同名的成员方法, 优先访问子类自己的方法

-> 在这里,如果父类与子类同名方法的参数列表不同【重载,在子类与父类中也可以构成重载】,根据调用方法传递的参数选择适合的方法进行访问。

 5、super关键字

super关键字

-> 在子类方法中,访问父类的成员

-> 只能在非静态方法中使用

eg1: super.a  -> 访问父类成员

 eg2: super.func() -> 访问父类方法

 eg3:super() -> 调用父类的构造方法   【必须放在第一行

-> 在构造子类对象时,先要调用基类的构造方法,将从基类继承下来的成员构造完整,然后再调用子类自己的构造方法,将子类自己新增加的成员初始化。

-> 在子类构造方法中,super(...)调用父类构造时,必须是子类构造函数中第一条语句

-> super(...)只能在子类构造方法中出现一次,并且不能和this同时出现

 6、初始化顺序

之前再代码块时,执行顺序:先执行静态代码块,并且不论有几个对象,只执行一次。当创建对象时,才会执行实例代码块,最后执行构造方法。

对于继承关系,其执行顺序:

父类静态,子类静态  --> 父类实例,父类构造 --> 子类实例,子类构造

并且静态的只执行一次

7、继承方式

 Java 不支持多继承,但支持多重继承。 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值