/*
老师和学生案例,加入抽烟和额外功能
分析:从具体到抽象
老师:
成员变量:姓名、年龄
构造方法:无参、带参
成员方法:吃饭();、睡觉(){}
学生:
成员变量:姓名、年龄
构造方法:无参、带参
成员方法:吃饭();、睡觉(){}
由于有共性功能,所以,提取出一个父类,人类。
人类:
成员变量:姓名、年龄
构造方法:无参、带参
成员方法:吃饭();、睡觉(){}
抽烟是额外功能不是人或者老师、或者学生一开始就应该具备的,所以,我们把它定义为接口
抽烟接口。
部分老师抽烟:实现抽烟接口
部分学生抽烟:实现抽烟接口
实现:从抽象到具体
抽烟接口:
部分老师抽烟:实现抽烟接口
部分学生抽烟:实现抽烟接口
人类:
成员变量:姓名、年龄
构造方法:无参、带参
成员方法:吃饭();、睡觉(){}
老师:
成员变量:姓名、年龄
构造方法:无参、带参
成员方法:吃饭();、睡觉(){}
学生:
成员变量:姓名、年龄
构造方法:无参、带参
成员方法:吃饭();、睡觉(){}
使用:具体类
*/
//定义抽烟接口
interface Smoking{
//抽烟的抽象方法
public abstract void smoke();
}
//定义抽象人类
abstract class Person{
//姓名
private String name;
//年龄
private int age;
//无参
public Person(){}
//带参
public Person(String name,int age){
this.name = name;
this.age = age;
}
//getXxx()/setXxx()
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 abstract void eat();
//睡觉(){}
public void sleep(){
System.out.println("睡觉了");
}
}
//定义具体老师类
class Teacher extends Person{
public Teacher(){}
public Teacher(String name,int age){
super(name,age);
}
public void eat(){
System.out.println("老师吃素");
}
}
//定义具体学生类
class Student extends Person{
public Student(){}
public Student(String name,int age){
super(name,age);
}
public void eat(){
System.out.println("学生吃肉");
}
}
//实现部分老师抽烟接口
class SmokingTeacher extends Teacher implements Smoking{
public SmokingTeacher(){}
public SmokingTeacher(String name,int age){
super(name,age);
}
public void smoke(){
System.out.println("抽烟的老师");
}
}
//实现部分学生抽烟接口
class SmokingStudent extends Student implements Smoking{
public SmokingStudent(){}
public SmokingStudent(String name,int age){
super(name,age);
}
public void smoke(){
System.out.println("抽烟的学生");
}
}
//测试类
class InterfaceTest2{
public static void main(String[] args){
//测试老师
SmokingTeacher st = new SmokingTeacher();
//Person p = new Teacher();//不抽烟的老师(多态),也可具体
st.setName("王意");
st.setAge(35);
System.out.println(st.getName()+"---"+st.getAge());
st.eat();
st.sleep();
st.smoke();
System.out.println("------------------------------");
SmokingTeacher st2 = new SmokingTeacher("无心",55);
//Person p2 = new Teacher("无心",55);//不抽烟的老师(多态),也可具体
System.out.println(st2.getName()+"---"+st2.getAge());
st2.eat();
st2.sleep();
st2.smoke();
System.out.println("------------------------------");
//测试学生
SmokingStudent ss = new SmokingStudent();
//Person p = new Student();//不抽烟的学生(多态),也可具体
ss.setName("小明");
ss.setAge(15);
System.out.println(ss.getName()+"---"+ss.getAge());
ss.eat();
ss.sleep();
ss.smoke();
System.out.println("------------------------------");
SmokingStudent ss2 = new SmokingStudent("小刚",18);
//Persong p2 = new Teacher("小刚",18);//不抽烟的学生(多态),也可具体
System.out.println(ss2.getName()+"---"+ss2.getAge());
ss2.eat();
ss2.sleep();
ss2.smoke();
System.out.println("------------------------------");
}
}
面向对象_老师学生案例加入抽烟功能分析及代码实现
最新推荐文章于 2024-03-26 11:52:09 发布