Java-super关键字
基本介绍
super代表父类的引用,用于访问父类的属性,方法和构造器
基本语法
- 访问父类的属性,但不能访问父类的private属性
super.属性名
A类
package com.hsp.extend._super;
public class A {
public int n1 = 100;
protected int n2 = 200;
int n3 = 300;
private int n4 = 400;
public void test100() {}
protected void test101() {}
void test102() {}
private void test103() {}
}
B类
package com.hsp.extend._super;
public class B extends A{
public void hi(){
System.out.println(super.n1 + " " +super.n2 + " " + super.n3 + " ");
}
}
- 访问父类的方法,不能访问父类的private方法
super.方法名(参数列表)
A类和上面相同
B类
package com.hsp.extend._super;
public class B extends A{
public void ok(){
super.test100();
super.test101();
super.test102();
}
}
- 访问父类的构造器
super(参数列表);//只能放在构造器的第一句,,只能出现一句
A.java
package com.hsp.extend._super;
public class A {
public int n1 = 100;
protected int n2 = 200;
int n3 = 300;
private int n4 = 400;
public void test100() {}
protected void test101() {}
void test102() {}
private void test103() {}
String name;
public A(String name){
this.name = name;
System.out.println(name);
}
}
B.java
package com.hsp.extend._super;
public class B extends A{
public B(){
super("This is A");
System.out.println("This is B");
}
}
Super01.java
package com.hsp.extend._super;
public class super01 {
public static void main(String[] args) {
B b = new B();
}
}
Super的使用细节
supper给编程带来的便利:
1.调用父类的构造器的好处(分工明确,父类属性由父类初始化,子类的属性由子类初始化)
2.当子类中由和父类中的成员(属性和方法)重名时,为了访问父类的成员,必须通过super,如果没有重名,使用super,this直接访问是一样的效果