Java面向对象_15 super关键字

super在继承构造函数中定义和作用

● 在继承中子类的构造函数必须依赖父类提供的构造函数
● super(参数列表)访问父类的构造函数
● super调用父类的构造函数, 必须在构造函数的第一行

public class Person {
	public Person() {

	}
}

public class Student extends Person {
	public Student() {
		super();
	}
}

有参构造

public class Person {
	private String name;
	private int age;

	public Person(String name, int age) {

	}
}
public class Student extends Person {

	/**
	 * 1.如果父类只提供了有参构造函数,那么子类的构造必须依赖父类提供的现有的构造函数 
	 * 2.super(参数列表)去访问父类提供的构造函数,必须明确写出参数
	 * 3.super必须写在构造函数的第一行
	 */
	public Student() {
		super("小王", 20);
	}
}

super访问父类的属性

子类的方法或构造器中,通过使用super. 属性
特殊情况: 当子类和父类中定义了同名的属性时, 想要调用父类中声明的属性,就需要通过 super . 属性 的方式来表明调用的是父类中声明的属性

public class Person {
	// 身份证号
	int id = 1001;
}

public class Student extends Person {
	// 学生证号
	int id = 80;

	public void show() {
		System.out.println(super.id + " " + id);
	}
}

public class Test {
	public static void main(String[] args) {
		new Student().show();
	}
}

在这里插入图片描述

super访问父类的方法

在子类的构造器或方法中使用 super.方法名

public class Person {
	public void eat() {
		System.out.println("人都需要吃饭!");
	}
}
public class Student extends Person {
public Student() {
	super.eat();
}

	public static void main(String[] args) {
		new Student();
	}
}

super与this的区别

● super( )调用父类的构造函数,必须在构造函数的第一行
● this( )调用本类的构造函数,必须在构造函数的第一行
● super( )和this( )不能同时调用构造函数

●代表的对象不同
this:本身调用者这个对象
super:代表父类对象的引用
●前置
this:没有继承也可以使用
super :只能在继承条件下才能使用.
●构造方法
this( ): 本类的构造
super( ) :父类的构造

区别thissuper
代表的对象本身调用者这个对象代表父类对象的引用
前置没有继承也可以使用只能在继承条件下才能使用
构造方法本类的构造父类的构造
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值