publicclassA{
String name ="name";}publicclassBextendsA{privateint name=123;//和父类中的属性name重名,按照就近原则,当前类中的name就是子类中声明的name,而不是父类中声明的namepublicvoidpp(){
System.out.println("子类中声明的name:"+name);//也可以写成this.name
System.out.println("父类中声明的name:"+super.name);//使用super.name引用父类中声明的name属性,还需要考虑范围限定词的问题}}
this.成员方法()用于表示当前对象的某个成员方法
super.成员方法()用于表示当前类的父类中定义过的耨个成员方法,一般用于覆盖定义(就近原则)
publicclassA{publicvoidpp(){
System.out.println("this is A class");}}publicclassBextendsA{publicvoidpp(){//子类中定义的方法签名和父类中的一致,实际上就是方法的覆盖
System.out.println("this is B class");}publicvoidcc(){// this.pp();//调用B类中声明的方法pp
System.out.println("this is B.cc()");super.pp();//调用父类中被子类同名方法覆盖的方法,注意范围限定词}publicstaticvoidmain(String[] args){newB().cc();}}
在static方法中不允许使用this或super之类的关键字
publicclassA{protected Long id;publicvoidpp(){
System.out.println("this is A class");}publicstaticvoidmain(String[] args){// System.out.println(this.id);//典型的语法错误,在static方法中不允许出现this或者super
A a=newA();
System.out.println(a.id);}}//子类publicclassBextendsA{private String id;publicvoidshow(){
System.out.println(super.id);}publicstaticvoidmain(String[] args){
B b=newB();
System.out.println(b.id);
b.show();}}
this和super关键字this用于指代当前对象super用于指代父类对象this()表示调用另一个构造器,super()表示调用父类的某个构造器,()中的参数决定调用的是那个构造器public class A{ public A(){ //调用A(String)这个构造方法 this("aaaa")//调用当前类中的另一个构造器 } public A(String a){ System.out.println(a); }}//其他