继承的描述
在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物,同理,波斯猫和巴厘猫继承自猫,而沙皮狗和斑点狗继承自狗。这些动物之间会形成一个继承体系,具体如下图所示。
继承需要符合关系:父类更加抽象、子类更加具体如:猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物
继承背后的思想:基于已存在的类构建新类
当从已经存在的类继承时,就重用了它的方法和属性,还可以添加新的方法和属性来定制新类以对需求
约定:从其他类导出的类叫子类,被导出的类叫父类
在java中,除了Object类之外,所有类都是子类,都只有唯一的父类
继承在面向对象中不可或缺
创建一个类是,总是在继承
继承的意义:
代码重用 体现不同抽象层次
父子类关系
父类更抽象,更加一般 子类更加具体,更特殊
实例:
package jicheng.hxx.java;
/*
* 学生继承于人
* */
class Person {
String name;
String address;
public void eat() {
System.out.println("人吃饭");
}
public void Drink() {
System.out.println("人喝水");
}
public void printInfo() {
System.out.println("name=" + name);
}
}
class Student extends Person {
void goToScholl() {
System.out.println("学生上学");
}
}
public class Test {
public static void main(String[] args) {
Person p = new Person();
p.name = "hxx";
p.eat();
Student s = new Student();
s.name = "学生";
s.eat();
s.printInfo();
}
}
运行结果
二、super关键字
特点:
super和this的关键字的特点类似:super代表的是分类对象的引用
当子类的成员出现同名时,可以通过super区分
子类的构造方法中,通过super关键字调用父类的构造方法
注意:当构造一个子类对象的时候一定先调用父类的构造方法来构造父类的对象。调用父类构造方法语句必须是子类构造方法中的第一条指令。
package jicheng.hxx.java;
class Person {
String name;
String address;
public Person(String name, String address) {
this.name = name;
this.address = address;
System.out.println("父类构造方法类");
}
public Person(String name) {
this.name = name;
}
public void eat() {
System.out.println("人吃饭");
}
public void Drink() {
System.out.println("人喝水");
}
public void printInfo() {
System.out.println("name=" + name);
}
}
class Student extends Person {
public Student(String name, String address) {
super(name, address);
System.out.println("子类构造方法类");
}
void goToScholl() {
System.out.println("学生上学");
}
public void eat() {
super.eat();
System.out.println("eat");
}
}
public class Test {
public static void main(String[] args) {
// Person p = new Person("hxx", "重庆工程学院");
// p.eat();
Student s = new Student("hxx", "和园4号225");
// s.eat();
s.printInfo();
s.eat();
}
}