定义三个类:课程类(创建子类)、教室类(提供子类)、老师类(主类) 创建相关子类,实现不同的老师,可以在不同的教室上不同的课程
一、项目目录
operation下的三个类是父类,classRoom包下的是ClassRoom类的子类,projects包下的类是Project类的子类。
二、项目代码
教室类
什么是封装:private修饰的属性是类的私有属性,如果别的类需要使用此私有属性,就需要使用它的get或者set方法,这就是将私有属性封装,提供对外开放的方法,提高数据安全性
public class ClassRoom {
//定义属性
private String name;
//空构造方法
public ClassRoom() {
}
//有参构造方法
public ClassRoom(String name) {
this.name = name;
}
//属性的getter/setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void say(){
System.out.println("我是ClassRoom类中的方法");
}
}
教室类的子类,一个重写了父类的方法,一个什么都没写没写
public class ClassOne extends ClassRoom {
@Override
public void say() {
System.out.println("我是ClassOne类中的方法");
}
}
public class ClassTwo extends ClassRoom {
}
课程类,依旧是一个姓名私有属性
public class Project{
private String name;
public Project() {
}
public Project(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
课程类的子类
public class English extends Project {
}
public class Math extends Project {
}
教师类
什么是继承:所有的子类里什么都没写,但是依旧可以调用setName方法,是因为它的父类有这个方法,也就是说子类继承父类后,父类的属性和方法子类都可以使用
public class Teacher{
private String name;
public void teach(English eng, ClassOne croom){
System.out.println(this.getName() + "教" + croom.getName() + "班的" + eng.getName());
}
public void teach(Math eng, ClassOne croom){
System.out.println(this.getName() + "教" + croom.getName() + "班的" + eng.getName());
}
public void teach(English eng, ClassTwo croom){
System.out.println(this.getName() + "教" + croom.getName() + "班的" + eng.getName());
}
public void teach(Math eng, ClassTwo croom){
System.out.println(this.getName() + "教" + croom.getName() + "班的" + eng.getName());
}
public Teacher() {
}
public Teacher(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
Teacher th = new Teacher();
th.setName("教师1");
Math ma = new Math();
ma.setName("数学");
ClassOne one = new ClassOne();
one.setName("一");
th.teach(ma, one);
}
}
Teacher类中有四个方法,他们方法名相同,方法的参数列表不同,这个是方法的重载
重载:同一个类中,方法名相同,参数列表不同。
重写:不同类,拥有继承/实现关系,方法名相同,参数列表相同,代码块不同,分别调用ClassOne的say方法和ClassTwo的say方法测试一下
one.say();
new ClassTwo().say();
以上简单的实例简单明了的演示封装和继承