class Main {
public static void main(String[] args) {
// 面向对象编程 - 继承
/**
继承可以解决代码复用,让我们的编程更加靠近人类思维,
当多个类存在相同的属性(变量和方法时,可以从这些类中抽象出父类,
在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,
只需要通过 extends 来声明继承父类即可。
继承的基本语法:
class 子类 extends 父类
1)子类就会自动拥有父类定义的属性和方法
2)父类又叫 超类,基类。
3)子类又叫派生类。
*/
//声明一个“小学生”对象
Pupil P1=new Pupil();
P1.name="小明";
P1.age=8;
P1.getScore(98);
P1.testing();
P1.showInfo();
System.out.println("====================");
//声明一个“大学生”对象
Graduate G1=new Graduate();
G1.name="大强";
G1.age=21;
G1.getScore(135);
G1.testing();
G1.showInfo();
}
}
// 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+"\t正在考小学数学...");
// }
// public void showInfo(){
// System.out.println("学生名:"+name+"\t年龄:"+age+"\t成绩:"+score);
// }
// }
// public class Graduate{ // 大学生
// 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);
// }
// }
// 可以看到两个类的变量信息和方法基本一样,可以用继承将复用高的代码写成父类
// 以下为改进版
// 父类,是Pupil和Graduate的父类
class Student{
//共有属性
public String name;
public int age;
private double score;
public void getScore(double score){
this.score=score;
}
//共有方法
public void showInfo(){
System.out.println("学生名:"+name+"\t年龄:"+age+"\t成绩:"+score);
}
}
// 让 Pupil 继承 Student类
class Pupil extends Student{
public void testing(){
System.out.println("小学生"+name+"\t正在考小学数学...");
}
}
//让 Graduate 继承 Student类
class Graduate extends Student{
public void testing(){
System.out.println("大学生"+name+"\t正在考大学数学...");
}
}