
Pupil类
package com.hspedu.entends_;
//小学生 -> 模拟小学生考试的情况
public class Pupil {
public String name;
public int age;
private double score;
public void setScore(double score) {
this.score = score;
}
public void testing(){
System.out.println("小学生" + name + "正在考小学数学...");
}
public void showInfo(){
System.out.println("学生名" + name + " 年龄" + age + " 成绩" + score);
}
}
Graduate类
package com.hspedu.entends_;
//大学生->模拟大学生考试的情况
public class Graduate {
public String name;
public int age;
private double score;
public void setScore(double score) {
this.score = score;
}
public void testing(){//唯一和Pupil不同的地方
System.out.println("大学生" + name + "正在考大学数学...");
}
public void showInfo(){
System.out.println("学生名" + name + " 年龄" + age + " 成绩" + score);
}
}
在Extends01中运行
package com.hspedu.entends_;
public class Extends01 {
public static void main(String[] args) {
Pupil pupil = new Pupil();
pupil.name = "ada";
pupil.age = 12;
pupil.testing();
pupil.setScore(60);
pupil.showInfo();
System.out.println("==============");
Graduate graduate = new Graduate();
graduate.name = "gigi";
graduate.age = 21;
graduate.testing();
graduate.setScore(90);
graduate.showInfo();
}
}
运行结果

问题点:两个类除了testing()方法之外,所有的内容都一样,用继承来解决代码冗余度过高的问题
基本语法:
子类 extends 父类{
子类特有的属性和发方法
}
继承示意图

利用继承改进上述代码
新建一个package:com.hspedu.entends_.improve_
子类:Pupil
package com.hspedu.entends_.improve_;
//子类,只需要写其独特的属性和方法
//让Pupil继承Student这个类
public class Pupil extends Student{
//Pupil独有的方法
public void testing(){
//必须继承之后才能使用name,因为Student里定义了name,可以直接用
System.out.println("小学生" + name + "正在考小学数学...");
}
}
子类:Graduate
package com.hspedu.entends_.improve_;
public class Graduate extends Student{
//Graduate独有的方法
public void testing(){
System.out.println("大学生" + name + "正在考大学数学...");
}
}
父类:Student
package com.hspedu.entends_.improve_;
//父类,是Pupil和Graduate的父类,拥有两个类共同的属性和方法
public class Student {
//共有属性
public String name;
public int age;
private double score;
//共有方法
public void setScore(double score) {
this.score = score;
}
public void showInfo(){
System.out.println("学生名" + name + " 年龄" + age + " 成绩" + score);
}
}
在Extends01(package com.hspedu.entends_.improve_)中运行
package com.hspedu.entends_.improve_;
public class Extends01 {
public static void main(String[] args) {
Pupil pupil = new Pupil();
pupil.name = "ada";
pupil.age = 11;
pupil.testing();
pupil.setScore(75);
pupil.showInfo();
System.out.println("==============");
Graduate graduate = new Graduate();
graduate.name = "gigi";
graduate.age = 20;
graduate.testing();
graduate.setScore(91);
graduate.showInfo();
}
}
运行结果

tips:子类中一定要加关键字extends