System.out.println(“A类的构造方法!”);
}
}
class B extends A{
public B(){
super();//子类构造方法的第一行无论写不写都会默认存在super(),但不与this()共存;
System.out.println(“B类中的构造方法”);
}
}
2)重要结论: 当一个构造方法的第一行: 既没有this()又没有super()【this()和super()不能共存】的话,默认会有一个super(); 表示通过当前子类的构造方法调用父类的无参数构造方法,所以必须保证父类的无参构造方法是存在的;
public class Super {
public static void main(String[] args) {
new B();
}
}
class A{
public A() {
System.out.println(“A类的构造方法!”);
}
}
class B extends A{
public B(){
this(“zhangsan”);//此处调用下面有参的构造方法,同时也会触发super()调用父类的构造方法
System.out.println(“B类中的构造方法”);
}
public B(String name){
super();//无论如何,构造方法中都会存在一个super()
System.out.println(“B类中的有参数构造方法String”);
}
}
3)理解:super的作用:模拟现实世界要想有儿子,必须把父亲造出来;它代表的是当前对象(this)的父类型特征;
4)无论怎么折腾,父类的构造方法都会先执行;
不管创建什么对象,老祖宗的object类的无参构造方法一定会执行(object类中的构造方法是处于"栈顶部",最后调用最先结束)
5)super不是引用,不保存内存地址,也不指向任何对象,只是代表当前对象内部那一刻父类型的特征;
6)"super."后面不仅可以访问属性,还可以访问方法;
7)练习
public class Super {
public static void main(String[] args) {
new C();
}
}
/*class Object{
public Object(){
}
}*/
class A /extends Object/{//Object这个是Sun公司写的
public A() {
//有super()
System.out.println(“1”);
}
}
class B extends A{
public B(){
//有super()
System.out.println(“2”);
}
public B(String name){
//有super()
System.out.println(“3”);
}
}
class C extends B{
public C(){
this(“zhangsan”);
System.out.println(“4”);
}
public C(String name){
this(name,20);
System.out.println(“5”);
}
public C(String name,int age){
super(name);
System.out.println(“6”);
}
}
输出结果
3、何时使用,何时省略super关键字?
1)何时使用super(实参列表) 当子类中构造方法访问父类private修饰的实例变量时,此时无法访问,必须通过super(实参列表)调用父类的构造方法才可访问父类private修饰的实例变量;
2)初始化当前对象父类型的特征,并没有创新新的对象,实际上对象只创建一个;
3)"super."何时不能省略? 父中有,子中又有,如果想在在子中访问"父的特征"时不可以省略
public class Super {
public static void main(String[] args) {
Vip v = new Vip(“zhangsan”);
v.shopping();
}
}
class Customer{
String name;//相当于super.name
public Customer(){
}
public Customer(String name){
super();
this.name = name;
}
}
class Vip extends Customer{
String name;//相当于this.name 允许同名变量出现,此时的name为空,但super和this访问的name不同
public Vip(){
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/2dcc61cf6de7d4a670d94094405a4b5d.jpeg)
最后
光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性
Java面试宝典2021版
最常见Java面试题解析(2021最新版)
2021企业Java面试题精选
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
-hSRX18ur-1713432320997)]
[外链图片转存中…(img-cebAGdD6-1713432320998)]
2021企业Java面试题精选
[外链图片转存中…(img-xqs53lU8-1713432320998)]
[外链图片转存中…(img-dgHaifUS-1713432320998)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!