前言
上一篇我们共同学习了类的封装,在本篇我们将共同学习类的继承。
一、继承的概念
继承:通俗来说就是一个类与另一个类建立了父子关系,继承类被称为子类,被继承类称为父类。当继承关系建立时,子类将获得父类中的一些方法和属性,并可以使用这些方法和属性,等同于子类也创建了这些方法和属性。
二、代码示例
1.方法和属性的继承
代码如下(示例):
1.Person类
//Person 人:父类,基类
//在Java中所有的类都默认继承Object类
public class Person/*extends Object*/ {
private int money = 1000;
public void say(){
System.out.println("说了一句话");
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
}
2.Student类
public class Student extends Person{
{
3.Appliction类
public class Application {
public static void main(String[] args){
Student student = new Student();
student.say();
int money = student.getMoney();
System.out.println(money);
}
}
运行结果:
2.构造器与super、this在继承中的应用
代码如下(示例):
1.Person类
//Person 人:父类,基类
//在Java中所有的类都默认继承Object类
public class Person/*extends Object*/ {
protected String name = "Person吴小龙";
public Person(){
System.out.println("Person无参构造执行了");
}
public void print(){
System.out.println("Person");
}
}
2.Student类
//Student is 人:继承类,派生类,子类。
//子类继承了父类就会拥有父类所有的方法。
//ctrl+H查看分级结构
public class Student extends Person{
private String name = "Student吴小龙";
public Student(){
//隐藏代码,调用了父类的无参构造器
//调用父类构造器必须在子类构造器第一行
super();
System.out.println("Student无参构造执行了");
}
public void print(){
System.out.println("Student");
}
public void test1(){
print();//Student
this.print();//Student
super.print();//Person
}
public void test(String name){
System.out.println(name);
System.out.println(this.name);
System.out.println(super.name);
}
}
3.Application类
public class Application {
public static void main(String[] args){
Student student = new Student();
student.test("吴小龙");
student.test1();
}
}
运行结果:
总结
- ’super注意点:
- super调用父类的构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或者构造方法中
- super和this不能同时调用构造方法
- Vs this:
- 代表的对象不同:
this:本身调用者这个对象
super:代表父类对象的应用 - 前提:
this:没有继承也可以使用
super:必须在继承时才可以使用 - 构造方法:
this():本类的构造
super():父类的构造
- 代表的对象不同: