第二十二天
学习了Java的继承特点和方法和super关键字
明天学习多态变化
一、java中的继承使用关键字“extends”标识,公式如下:
class 子类 extends 父类{}
继承的作用:使用继承,子类可以拥有父类中的非私有属性,也就是说父类中的非私有属性可以
供子类共享,这样多个类中相同的属性就看可以抽出来作为父类管理。
(1)子类共享父类中的非私有属性
public class Student extends Person{ public static void main(String[] args) { Student s=new Student(); String str =s.name; } }
(2)子类可以拥有父类中的非私有方法
public class Student extends Person{ public static void main(String[] args) { Student s=new Student(); String str =s.name; s.setName("无证云"); s.setAge(25); } }
Java不支持多继承,一个类只能继承一个类,即子类只能继承一个父类,但是一个父类可以被多个子类继承。
二、super关键字
子类可以使用super关键字调用父类的非私有属性和私有方法,还可以调用父类的忒私有构造方法
1.使用super调用父类属性:super.父类属性(super关键字可以省略)
public class Student extends Person{ private String deparement;//系别 private String specialty;//专业 String name=super.name;//调用父类的属性 public void test() { super.getAge(); //调用父类的方法 } }
2.使用super调用父类的构造方法
super(),调用父类的无参构造方法;
super(参数),调用父类的有参数的构造方法
public class Student extends Person{ private String deparement;//系别 private String specialty;//专业 String name=super.name;//调用父类的属性 public void test() { super.getAge(); //调用父类的方法 } public Student() { super("sky",26);//调用父类构造方法 } }
3.子类和父类构造方法的执行顺序
(1)子类默认调用父类的无参构造方法,也就是说,子类的构造方法中会默认调用super(),并且在构造方法的第一行
(2)如果子类只提供有参的构造方法,则必须在子类的构造方法中调用父类的构造方法
(3)执行完父类的构造方法之后,再调用本类的构造方法。
public class Person { public String name; public String sex; public int age; public Person() { System.out.println("父类无参构造方法"); } public Person(String name,int age) { this.name=name; this.age=age; System.out.println("父类无参构造方法"); } public static void main(String[] args) { Student stu=new Student(); } } class Student extends Person { public Student() { super("sky",26); System.out.println("子类有参构造方法"); } }
为了更好的继承类,每个父类都应该提供无参的构造方法,避免没有构造方法而造成的继承错误。