什么是继承?
- Java中提供一个关键字extends,用这个关键字,可以让一个类和另一个类建立起父子关系。
public class Student extends People { }
- Student称为子类(派生类),People称为父类(超类 或 基类)
- 作用:当子类继承父类后,就可以直接使用父类公共的属性和方法了
使用继承的好处
- 可以提高代码的复用性,减少代码冗余,增强类的功能扩展性
继承后子类的特点:
- 子类继承父类,子类可以得到父类的属性和行为,子类可以使用。
- Java中子类更强大
代码演示如下:
定义一个人类:父类
public class People { /** 人类:父类 */ public void run(){ System.out.println("人会跑~"); } }
再定义一个学生类:子类
public class Student extends People {
/**
学生类:子类
*/
}
最后定义一个测试类
public class Test { public static void main(String[] args) { //目标:认识继承这种关系。搞清楚使用继承的好处 Student s = new Student(); s.run(); } }
运行后的结果如图:
继承设计规范:
- 子类们相同特征(共性属性,共性方法)放在父类中定义,子类独有的属性和行为应该定义在子类自己里面
为什么子类独有的属性和行为应该定义在子类自己里面呢?
- 如果子类的独有属性、行为定义在父类中,会导致其它子类也会得到这些属性和行为,这不符合面向对象逻辑
代码演示如下:
父类代码:
public class People { /** 人类:父类 */ private String name; private int age; /** 查看课表 */ public void queryCourse(){ System.out.println(name + "正在查看课表~"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
子类代码有两个,学生类和老师类
public class Student extends People { /** 独有的行为,填写反馈信息 */ public void writeInfo(){ System.out.println(getName() + "写下了:学习语法,好哈皮~"); } } public class Teacher extends People { /** 独有的行为,发布问题 */ public void writeQuestion(){ System.out.println(getName() + "学的怎么样?"); } }
测试类:
public class Test { public static void main(String[] args) { //目标:理解继承的设计思想 Student s = new Student(); s.setName("鸟儿");//使用父类的 s.setAge(21);//使用父类的 System.out.println(s.getName());//使用父类的 System.out.println(s.getAge());//使用父类的 s.queryCourse();//使用父类的 s.writeInfo();//子类的方法 System.out.println("-------------------------------"); Teacher t = new Teacher();//使用父类的 t.setName("鸟老师");//使用父类的 t.setAge(60);//使用父类的 System.out.println(s.getName());//使用父类的 System.out.println(s.getAge());//使用父类的 t.queryCourse();//使用父类的 t.writeQuestion();//使子类的方法 } }