跟着韩顺平学Java打卡笔记!(Day1)(哪天没学记得踢我一下(✿◡‿◡))

跟着韩顺平学Java打卡笔记!(Day1)(哪天没学记得踢我一下(✿◡‿◡)) 289集到 301集 内容继承细节和本质内存super关键字MD使用方法重写开头# 阿凡一. 继承细节1在自己写了一个构造器后原来系统默认的无参构造器会被取代如果后续还想要无参构造器的就必须自己写比如在调用子类时会先调用父类的构造器如果你已经给父类写过含参的构造器但没有写一个无参的那么就需要使用super来指代调用哪个构造器。因为子类在创建的时候会调用自己的构造器但是在自己的构造器里的第一行先会调用父类的构造器如果你不加super那么编译器会报错。ps:这里是指你把无参构造器给取代了的情况。正常情况不会2.super和this只能在构造器里使用且只能在第一行使用且使用其中一个。super指调用父类的构造器而this指调用本类的。图13.Obejct记得大写期中考错了哭/(ㄒoㄒ)/~~图二4.Java都是单继承机制不能直接继承多个父类他只能有一个父类。图三二.继承的本质1.继承在内存的分配图图四解释1在这个过程中首先会在方法区加载不同的类从左到右依次从高类向低类进行Object开始Son结束后面的继承前面的与此同时在常量池里储存字符串2接着会在堆里开辟空间0X11代表main方法里的son对象。接着依次从爷爷类开始在son的空间里开辟自己的空间存放变量。比如0X22这块空间代表爷爷name变量里存的是方法区域里爷爷的名字的地址以此类推依次开辟爸爸儿子的空间值得强调的就是父类的age是基本数据类型所以就直接存在堆里了。最后将0X11返回给主栈里的son。但问题来了如果要访问name那么是怎样的顺序来呢我们来看看答案按照查找关系来查找关系这里值得一提的就是第三点如果父类有但是他是私有变量的话那么编译器将会报错。所以要强调可以访问比如说在上面的图四代码中如果改为爷爷也有年龄父亲的age改为private那么这时访问age便会报错。三。练习题1这里要来补充一个导致我做错的知识点Java 继承中子类构造器的第一行默认会调用父类的无参构造器super()除非手动写了this()或super()。也就是说如果使用了this或者super原本构造器里的super就取消了。所以不会在调用b的含参构造器前调用父类。解题如下四.super关键字1.如果n1在父类没有但是子类有子类使用super.n1的时候会报错。2.ps:但是构造器中只能到父辈到不了爷爷辈。五。方法覆盖1.简介这里强调一下父类不单单是父类子类也可以改变爷爷的方法。和上面一样2.细节