java接口的实例
问题如下:
老师和学生案例,加入抽烟的额外功能
分析:从具体到抽象
老师:姓名,年龄,吃饭,睡觉
学生:姓名,年龄,吃饭,睡觉
由于有共性功能,我们提取出一个父类,人类。
人类:
姓名,年龄
吃饭();
睡觉(){}
抽烟的额外功能不是人或者老师,或者学生一开始就应该具备的,所以,我们把它定义为接口
抽烟接口
部分老师抽烟:实现抽烟接口
部分学生抽烟:实现抽烟接口
实现:从抽象到具体
使用:具体
*/
代码如下:
package hello;
//定义抽烟接口
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;
}
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("抽烟的学生");
}
}
public class Hello
{
public static void main(String[] args) {
SmokingTeacher tt=new SmokingTeacher();
tt.setName("张三");
tt.setAge(20);
System.out.println(tt.getName()+"---"+tt.getAge());
System.out.println("------------");
tt.eat();
tt.sleep();
tt.smoke();
System.out.println("-------");
SmokingTeacher tt1=new SmokingTeacher("张三",20);
System.out.println(tt1.getName()+"----"+tt1.getAge());
tt1.eat();
tt1.sleep();
tt1.smoke();
System.out.println("-------------------");
//测试学生
SmokingStudent ss = new SmokingStudent();
ss.setName("林青霞");
ss.setAge(27);
System.out.println(ss.getName()+"---"+ss.getAge());
ss.eat();
ss.sleep();
ss.smoke();
System.out.println("-------------------");
SmokingStudent ss2 = new SmokingStudent("刘意",30);
System.out.println(ss2.getName()+"---"+ss2.getAge());
ss2.eat();
ss2.sleep();
ss2.smoke();
}
}
注:本人还是一名大一小白,会的东西也就一点点,希望有大牛能够多多指点!!!