Super关键字
概念:在面向对象编程中,当某个类继承自另一个类时,它会继承父类的所有非私有属性和方法,并可以在此基础上进行扩展。在Java中,常常使用关键字super来调用父类的构造方法、成员变量和方法。
super.属性
class Animal{
private String name;
private int age;
public Animal(){}
public Animal(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public void eat(){
System.out.println(this.name + "吃饭");
}
public void sleep(){
System.out.println(this.name + "睡觉");
}
}
class Dog extends Animal{
public void method(){
System.out.println(super.name);//访问父类属性
System.out.println(super.age)
}
}
super.方法
class Animal{
private String name;
private int age;
public Animal(){}
public Animal(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public void eat(){
System.out.println("父类吃饭");
}
public void sleep(){
System.out.println("父类睡觉");
}
}
class Dog extends Animal{
@Override
public void eat(){
System.out.println("子类吃饭");
}
public void method(){
super.eat();//访问父类eat方法
}
}
super()
class Animal{
private String name;
private int age;
public Animal(){}
public Animal(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public void eat(){
System.out.println("父类吃饭");
}
public void sleep(){
System.out.println("父类睡觉");
}
}
class Dog extends Animal{
@Override
public void eat(){
System.out.println("子类吃饭");
}
public Dog(){
super();//默认调用父类无参构造方法
System.out.println("子类构造器被调用");
}
}
super关键字的使用限制
- super关键字只能用在子类中。
- super调用构造方法时必须位于子类构造方法的第一行,因为构造过程是从父类向子类逐步进行的。
- super和this关键字不能在同一个构造方法中同时使用来调用构造方法。