一、今日学习内容
1、Java中的继承
(1)Java中的继承使用关键字“extends"表示:class 子类 extends 父类{ }
继承的作用:使用继承,子类可以拥有父类中的非私有属性,也就是说父类中的非私有属性可以供子类共享,这样,多个类中相同的属性就可以抽取出来作为父类管理。(Java不支持多继承,一个类只能继承一个类,即子类只能继承一个父类,但是一个父类可以被多个子类继承)
(2)super关键字
在Java继承中,子类可以使用super关键字调用父类的非私有属性和非私有方法,还可以调用父类的非私有构造方法。
a.使用super关键字调用父类属性:super.父类属性 (其中,super 关键字可以省喝下面是子类调用父类属性的举例。)
父类: Person 定义如下:
public class Person{ public String name; public string sex; public int age; public String getName() { return name; } public void setName (String name) { this.name =name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age ; } public void setAge(int age){ this.age=age; } }
定义好了Person类作为父类后,接着定义子类Student
使用super关键字调用属性
public class Student extends Person { private String deparetment; //系别 private String specialty; //专业 String name = super. name; //调用父类的属性name }
使用super关键字调用方法
public class Student extends Person { private String deparetment; //系别 private String specialty; //专业 String name = super. name; //调用父类的属性name public void test(){ super.getAge(); } }
(super关键字可以省略)
b.使用super调用父类的构造方法:使用super调用父类的构造方法与使用this 调用构造方法有异曲同工之处,如果使用super(),则是调用父类的无参构造方法:如果 super (参数),则是调用父类有参数的构造方法。
示例:调用父类构造方法
public class Person { private String name; private int age; public Person() {} public Person(String name,int age) { this .name = name; this. age=age; } } class Student extends Person{ public Student() { super("sky", 26); //调用父类构造方法 } }
c.子类和父类构造方法的执行顺序
(1)子类默认调用父类的无参构造方法,也就是说,子类的构造方法中会默认调用super()并且在构造方法的第一行。
(2) 如果子类只提供有参的构造方法,则必须在子类的构造方法中调用父类的构造方法。
(3)执行完父类的构造方法后,再调用本类中的构造方法.
示例:
public Class Person { private String name; private 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("子类有参构造方法"); } }
输出结果:父类有参构造方法
子类有参构造方法
从打印结果可以看出,先调用父类的构造方法,再调用子类的构造方法
为了更好地继承类,每个父类都应该提供无参的构造函数,避免因没有构造函数造成继承错误。
二、遇到的问题
没有遇到什么问题
三、明日计划
明天继续学习第五章的内容