一;基本介绍
二:基本语法
- 访问父类的属性,但不能访问父类的private属性 super.属性名; ```java class Person{ int n1 = 100; }
class men extends Person{ int n1 = 200; }
class student extends men{ int n1 = 300;
public void test00(){System.out.println(super.n1);}
}
2. **访问父类的方法,不能访问父类的private方法 _super.方法名(参数列表);_**```javapublic static void main(String[] args) {student student = new student();student.test00();}class Person{}class men extends Person{public void eat(){System.out.println("man 中的eat方法");}}class student extends men{public void test00(){super.eat();}}
访问父类的构造器: super(参数列表);只能放在构造器的第一句,只能出现一句! ```java public static void main(String[] args) { student student = new student(); student.test00(); } class Person{ String name; public Person() {
} public Person(String name) {
this.name = name;
} } class men extends Person{ int age;
public men(String name, int age) {
super(name);this.age = age;
}
}
<a name="EUZ5E"></a>### 三:细节- **_ 查找eat方法时 eat( ) 和 this.eat( )一样 _**- **_先找本类,如果有,则调用_**- **_如果没有,则找父类(如果有,并可以调用,则调用_**- **_如果父类没有,则继续找父类的父类,整个规则,就是一样的,直到Object类_**```javapublic static void main(String[] args) {student s = new student();s.eat();}class Person{public void eat(){System.out.println("person 中的eat方法");}}class men extends Person{public void eat(){System.out.println("man 中的eat方法");}}class student extends men{public void test00(){super.eat();}}
- 查找eat方法时 super.eat( )是直接查找父类;
- 如果父类有,则调用
- 如果父类没有,但是子类有,也不会返回调用子类,直接报错 ```java public static void main(String[] args) { student s = new student(); s.test00(); } class Person{ public void eat(){ System.out.println(“person 中的eat方法”); } }
class men extends Person{
} class student extends men{ public void eat(){ System.out.println(“studnet中的eat()”); }
public void test00(){super.eat();//会报错:父类都没有eat方法,就算子类有也不会返回//因为super是直接去找父类}
}
四:super和this比较

所有就撒到个fdfafafafafda不应该吧所有十五交给他们来实现dad
