1.讲解:
a.人类包含学生类,学生类包含中学生类 大学生类,像这样,学生类就可以作为中学生类和大学生类的父类
b.子类可以直接继承父类的属性和方法 ,并且使用
c.继承可以实现代码复用 ,子类不需要写大家都有的方法
d.子类可以拥有自己独有的属性和方法 ,只能有子类对象自己调用
例如:游戏 王者荣耀很多英雄角色 ,每个英雄角色都有属性 ,大部分的属性相同,使用继承可以少写很多代码
2.语法:
a. public class 子类名 extends 父类名{ }
b.一个类只能直接继承一个父类 ,可以存在多个父系类
c.方法重写 改造父类方法必须有继承
d.子类中可以重写父类的方法 ,前提要求所有内容必须一致 除方法体{ }之外
e.子类中重写了父类的方法,那么就不会调用继承的方法,而是调用子类自己重写的方法
f.若子类继承父类的方法,但是父类的某个方法不满足子类的需求 ,子类可以通过重写方法 改造继承来的方法 从而变成一个子类特有的方法 ,只是逻辑特有名字还是一样的
3.结合代码:
a.先写一个父类:学生类(写入学生共有属性如:姓名 班级名 年龄 分数...)
package com.ldy0727;
//父类
public class Student{
String name;
String classname;
int age;
int score;
public void read(){
System.out.print(name);
System.out.println(" 年龄为"+age);
}
}
b.写一个大学生类,加extends student继承学生类
package com.ldy0727;
//子类
public class UNstudent extends Student {
public void read(){
System.out.print(name);
}
}
大学生特有属性比如 英语4,6级,可以在大学生类中写入
package com.ldy0727;
//子类
public class UNstudent extends Student {
int CET4;
int CET6;
public void read(){
System.out.print(name);
System.out.println(" 英语四级分数为"+CET4);
}
}
c.再写一个中学生类,继承学生类属性,添加中考分数属性
package com.ldy0727;
public class MidStudent extends Student {
int midexamscore;
public void read(){
System.out.println(name+" 在读高中数学");
}
}
4.继承测试:
package com.ldy0727;
public class Test {
public static void main(String[] args) {
Student stu = new Student ();
UNstudent unStu = new UNstudent ();
MidStudent midStu = new MidStudent ();
// 子类对象 调用的是继承的 name
stu.name = "张三";
unStu.name = "李四";
midStu.name = "王五";
// 子类对象调用的是继承的方法
stu.read();
unStu.read();
midStu.read();
}
}
结果: