1.在Java中,有时还会遇到子类中的成员变量或方法与超类(有时也称父类)中的成员变量或方法同名,因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量和方法就隐藏了超类的成员变量或方法,但是我们如果想要使用超类中的这个成员变量或方法,此使就需要用到super,请看下面的类。
class Country
{
String name;
void value()
{
name="China";
}
}
下面的子类中,自类的成员变量和方法隐藏了超类的成员变量name和方法value(),
class City extends Country
String name;
void value()
{
name="Beijing";
super.value();
System.out.println(name);
System.out.println(super.name);
}
为了在子类中引用超类中的成员变量name和方法value(),在代码中我们使用了super,super.name和super.value();
所以显示的结果为
Beijing
China
class Country
{
String name;
void value()
{
name="China";
}
}
下面的子类中,自类的成员变量和方法隐藏了超类的成员变量name和方法value(),
class City extends Country
String name;
void value()
{
name="Beijing";
super.value();
System.out.println(name);
System.out.println(super.name);
}
为了在子类中引用超类中的成员变量name和方法value(),在代码中我们使用了super,super.name和super.value();
所以显示的结果为
Beijing
China
2.如果我们想要使用超类的构造函数则应当使用super(参数列表)的形式。
3.
/** * Created by zhangwenqiang on 2016/10/24. */ public class Java8DefaultMethods { public static void main(String args[]){ Vehicle vehicle = new Car(); vehicle.print(); } } interface Vehicle { default void print(){ System.out.println("I am a vehicle!"); } static void blowHorn(){ System.out.println("Blowing horn!!!"); } } interface FourWheeler { default void print(){ System.out.println("I am a four wheeler!"); } } class Car implements Vehicle, FourWheeler { public void print(){ Vehicle.super.print(); FourWheeler.super.print(); Vehicle.blowHorn(); System.out.println("I am a car!"); } }