javaweb课堂练习继承与重写怎么做_Java继承

Java不像C++,Python那样支持多继承,Java只支持单继承,但是可以多实现。

先看变量在继承当中的情况

5097bff0c0a7069278f524f33988cb20.png

89aef6a4f8e813feed5df9126f3e88fe.png

如果要查看父类的num怎么办呢? 用 super。this代表的是本类对象的引用,super代表的是父类对象的引用。子类访问本类中的成员变量用this,访问父类中的成员变量(非私有)用super关键字

c46558eb548ee26c28a7b7c004ced690.png

成员函数

d1267265075f4ad99f29183eb2f58e67.png

但是子类出现和父类一模一样的函数时,当子类对象调用该函数,会运行子类函数的内容

这种情况是函数的另一种特性:重写(覆盖)

b38229a541ddf53414cbb4810313fba0.png

当子类继承父类,沿袭了父类的功能到子类中,但是子类虽具备该功能,但是功能的内容却和父类不一致,这时候,没有必要定义新功能,而是使用方法重写,保留父类的功能定义,并重写功能内容即可。。

21f58129491182f0ae83f7e35aeffe69.png

静态只能覆盖静态

子类覆盖父类,必须保证子类权限大于父类权限,才可以覆盖,否则!编!译!失!败!

重写是存在于,子父类中的,而且重写的方法要有一模一样的返回值,方法名,参数列表


执行顺序,看图吧,不多说了。记住一点,创建子类的对象的时候,父类的构造也加载是因为子类的构造方法里省略了第一句super();

9f6af85ccd521bb03beac2b832f6dad1.png

而且super() 会访问父类中空参数的构造函数,而且子类中所有的构造函数默认第一行都是super(),

我不管你是自己手动无参的构造函数,还是父类默认的构造函数,总之父类要有无参的构造函数,否则编译都过不去。

假如父类真的没有空参数的构造函数呢? 那就子类构造函数的第一行,怎么样?显示的调用一下 假如父类是 fu(int x){} 那么子类就应该super(666)放在子类构造函数第一行就行了

再来说一下为什么要有super,因为子类是要继承父类的属性的。而属性又是根据构造方法来初始化的,所以你在父类中声明了变量,父类的构造方法是可以对这个变量进行赋值和修改的。当子类对父类进行继承的时候,子类是不是应该先参考一下父类对这个属性的操作啊?然后子类再考虑自身的情况,做进一步修改!如果没有super的话,那么子类继承父类的就是父类里原始的成员变量,这就等于没有继承,失去了继承的意义。我继承的话,本身就是想接着父亲的遗产啊,父亲的江山,对不对!所以子类在对象初始化的时候,要先访问父类的构造方法。

继承这块还挺难的,有点绕,我也是经常忘!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值