【Java基础】继承

目录

1. 继承的语法

 2.父类成员变量的访问

2.1 子类与父类不同名的成员变量的访问

 2.2 子类与父类同名的成员变量的访问

3.父类成员方法的访问

3.1父类与子类没有同名的成员方法

 3.2 父类与子类有同名的成员方法

4.调用与子类同名的父类成员

4.1调用与子类同名的父类成员方法

 4.2调用与子类同名的父类成员变量

5.子类中的构造方法


Java是一门面向对象的语言,面向对象程序有三大特性,继承则是其中之一。

继承:将多个类的共性进行抽取,达到代码的复用。

        比如,小狗和小鸟都是动物,都会吃饭,都有各自的名字,这些是它们的共性。而小狗会汪汪叫,小鸟则会飞,这是他们特有的属性。因此,我们可以把小狗和小鸟的共性抽取出来,作为动物的共性。而它们也有自己的属性,这是他们所特有的。在继承中,存放的是多个类的共性的类,称之为 为 父类/基类;存放的是 自己特有属性的类,称之为 子类/派生类

        当我们写了多个类时,这些类有共性,有自己的特性,这种情况我们就可以用继承来写。

1. 继承的语法

继承所用到的关键字:extends

如上所说,小狗和小鸟都是动物,可以定义个Animal类作为父类,在父类中写 动物的共性。

 然后定义Dog类和Bird类,写各自特有的属性,在定义子类的时候,要先把父类中存放的共性 继承下来。

     继承语法:修饰符 子类名 extends 父类名{ },这样就继承了父类中的属性,然后在子类中就可以写自己特有的属性。

 这样就完成了继承,我们可以写多个子类,在子类中只需写自己特有的属性就可以了,就不用写一个子类定义一个名字了,父类的属性可以直接用,这就达到了代码的复用。下面来运行一下:

 2.父类成员变量的访问

2.1 子类与父类不同名的成员变量的访问

子类中没有与父类同名的成员变量,在子类访问a,子类中没有a。则访问的是父类中的a

 2.2 子类与父类同名的成员变量的访问

子类与父类有同名的成员变量时,那么访问该变量时访问的是子类中的成员变量

 【总结】:在子类中访问成员变量时,优先访问子类自己的成员变量,若子类自己中没有该变量,则再去访问父类中的。即 就近原则

3.父类成员方法的访问

3.1父类与子类没有同名的成员方法

子类与父类没有同名的成员方法时,在子类访问base1()方法,访问的是父类中的方法。

 3.2 父类与子类有同名的成员方法

父类与子类有同名的成员方法,在子类调用该同名方法时,调用的是子类自己的成员方法

 【总结】:在子类中访问成员方法时,若子类中没有该方法,则去父类中调用。即 先在子类中找,若子类中没有,再去 父类中调用,也是 就近原则。

问题:若子类和父类有同名的成员时,如何在子类中调用父类中的 该成员?这就要用到super关键字了。

4.调用与子类同名的父类成员

4.1调用与子类同名的父类成员方法

子类与父类有同名的成员方法,在子类中调用父类的该成员方法,使用super关键字.

语法:super.方法名();

 4.2调用与子类同名的父类成员变量

子类与父类有同名的成员变量时,在子类中访问父类中的该成员变量,使用关键字super。

语法:super.变量名

 【注意】:super关键字只能在非静态方法中使用。

5.子类中的构造方法

若父类中有构造方法,则在子类中应该首先帮助父类进行构造方法。使用super()帮助构造

      若父类中是 无参 的构造方法,在子类中帮助父类构造方法时,要在子类构造方法中的第一句 通过super()调用,来帮助父类构造。若用户没有调用,编译器会在子类构造方法中的第一句 自动调用super()。

       若父类中是 有参 的构造方法,则在子类帮助父类构造方法时,用户必须要在子类构造方法中的第一句 通过super(参数)调用,来帮助对父类构造。编译器不会自动调用。若用户不调用super(参数),则子类的构造方法会报错。

【 总结】

(1)若父类中是 无参 的构造方法,子类帮助父类构造时 用户要在子类构造方法的第一句通过super()调用,来帮助父类构造方法。如果用户没有调用,编译器也会在子类构造方法的第一句自动调用

(2)若父类中是 带参 的构造方法,子类帮助父类构造时 用户必须要在子类构造方法的第一句通过super(参数)调用来帮助父类构造方法,否则子类的构造方法会报错。编译器不会自动调用父类中带参的构造方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值