Java学习:十四.super初步

本文详细介绍了Java中的`super`关键字和构造器的使用。通过实例展示了如何在子类构造器中调用父类构造器,并解释了构造器链的工作原理。文章还提供了一个综合案例,解释了构造器调用的顺序以及`this`关键字的应用。
摘要由CSDN通过智能技术生成

一.super和this

在这里插入图片描述

在这里插入图片描述

举例1:

public class SuperTest01 {
	public static void main(String[] args) {
		new B();	
	}
}
class A{
	public A(){
		System.out.println("A的构造方法");
	}
}
class B extends A{
	public B() {
		System.out.println("B的构造方法");
	}
  }

结果:
在这里插入图片描述

该程序中有默认的super()方法,但是不显示。

public class SuperTest01 {
	public static void main(String[] args) {
		new B();	
	}
}
class A extends Object{
	public A(){
	    super();//此处也有super(),因为A类会继承Object类
		System.out.println("A的构造方法");
	}
}
class B extends A{
	public B() {
		super();//我们可以写出来,不写也是默认无参数super();
		System.out.println("B的构造方法");
	}
  }

举例2:

public class SuperTest01 {
	public static void main(String[] args) {
		new B();	
	}
}
class A{
	public A(){
		System.out.println("A的无参构造方法");
	}
	public A(int i) {
		System.out.println(i+"A的有参构造方法");
	}
}
class B extends A{
	public B() {
		super(123);
		System.out.println("B的无参构造方法");
	}
  }


在这里插入图片描述
当我们在程序中手动添加super(参数列表,可以没有)时,默认的super()就不存在。

二.综合案例

public class SuperTet02 {
    public static void main(String[] args){
    	new C();
    }
}
class A1{
	public A1() {
		//super();
		System.out.println("1");
	}
}
class B1 extends A1{
	public B1() {
		//super();
		System.out.println("2");
	}
	public B1(String name) {
		//super();
		System.out.println("3");
	}
}
class C extends B1{
	public C() {
		this("zhangsan");//没有super()
		System.out.println("4");
	}
	public C(String name) {
		this(name, 20);
		System.out.println("5");
	}
	public C(String name, int age) {
		//super();
		System.out.println("6");
	}
}

在这里插入图片描述
首先创建C类无参的对象,进入C类,发现this("“zhangsan”),接着调用 C(String name),发现this(name, 20);接着调用 C(String name, int age),接着调用super(),因为C的父类为B1,所以进入B1的无参构造函数,调用super(),因为B1的父类为A1,所以进入A1的无参构造函数,接着调用super(),指向了Object,然后执行第二行System.out.println(“1”);输出1,结束后退出A类的函数,进入B类,输出2,结束进入public C(String name, int age) ,输出6,同理依次输出5,输出4.

最近笔者也在运营公众号,欢迎大家的关注!我们一起学习Java,一起进步。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值