1.关键字:extends
1.子类能够继承父类的非私有成员(成员变量,成员方法)
2.子类的对象是由子类,父类共同完成的
3.Java是单继承,非多继承,但可以多层继承
2.要点:
1.在子类访问其他成员变量,方法
1.先在子类范围找
2.后在成员范围找
3.如果想访问父类中与子类重名的成员,用super.父类成员变量/方法
2.构造器
1:任何class的构造方法中,第一行语句必须是调用父类的构造方法,即子类的构造器都会先调用父类的构造器,再执行自己,不写则会自动加上super();
2:父类若没有无参构造器,子类就必须显式调用super()
并给出参数去调用父类的有参构造器
3:子类不会继承父类的构造方法。
3.使用:
public class Test {
public static void main(String[] args) {
System.out.println("lllllllllhello");
Student s =new Student("le",12);
System.out.println(s.getNames());
System.out.println(s.getScore());
}
}
class Person{
protected String name;
public Person(String name){
this.name=name;
}
public void setNames(String names){
this.name =names;
}
public String getNames(){
return this.name;
}
}
class Student extends Person{
protected int score;
public Student(String name, int score){
super(name);
this.score=score;
}
public int getScore(){
return this.score;
}
}
4.结果:
ps:调用兄弟构造器
格式this();
public Man(int age) {
this(age,666);
}
public Man(int age, int score) {
this.age = age;
this.score = score;
}
第一个构造器会调用第二个构造器来给参数赋值,创建对象时若不传入score的实参,则会默认赋予score的值为666
this()语法与super()不能同时出现,因为他俩都需要放在构造器的第一行