super关键字基础语法以及和this的区别
【摘要】 基本介绍 super代表父类的引用,用于访问父类的属性、方法、构造器。基本语法(1)访问父类的属性,但不能访问父类的private属性。 格式:super.属性名;创建A类,再创建B类继承A类public class A { //4个属性 public int n1 = 100; protected int n2 = 200; int n3 = 300;...
基本介绍
super代表父类的引用,用于访问父类的属性、方法、构造器。
基本语法
(1)访问父类的属性,但不能访问父类的private属性。 格式:super.属性名;
创建A类,再创建B类继承A类
public class A {
//4个属性
public int n1 = 100;
protected int n2 = 200;
int n3 = 300;
private int n4 = 400;
//4个方法
public void test100() {
}
protected void test200() {
}
void test300() {
}
private void test400() {
}
//构造器
public A(String name) {
}
public A(String name , int age) {
}
public A() {
//无参构造器
}
}
从B类中调用A类的属性
public void attribute() { //attribute 属性
System.out.println(super.n1 + " " + super.n2 + " " + super.n3);
}
可以发现,如果调用private类型的n4,则会报错
(2)访问父类的方法,但不能访问父类的private方法。 格式:super.方法名(参数列表);
调用父类中的方法也是一样的,如果调用了私有类型的方法则会报错
public void method() { //method 方法
super.test100();
super.test200();
super.test300();
}
(3)访问父类的构造器。格式:super(参数列表);
注意:只能放在构造器的第一句,且只能出现一句。
public B() {
// super();
// super("zwy");
super("zwy" , 18);
}
如果调用两次构造器则会报错
this与super的区别
No. | 区别点 | this | super |
1 | 访问属性 | 访问本类中的属性,如果本类没有此属性,则从父类中继续查找 | 直接从父类开始查找属性 |
2 | 调用方法 | 访问本类中的方法,如果本类没有此方法,则从父类中继续查找 | 直接从父类开始查找方法 |
3 | 调用构造器 | 调用本类的构造器,必须放在构造器的首行 | 调用父类的构造器,必须放在子类构造器的首行 |
4 | 特殊 | 表示当前对象 | 子类中访问父类对象 |
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)