1:
/* 猫狗案例,加入跳高的额外功能 分析:从具体到抽象 猫: 姓名,年龄 吃饭,睡觉 狗: 姓名,年龄 吃饭,睡觉 由于有共性功能,所以,抽取出一个父类: 动物: 姓名,年龄 吃饭(); 睡觉(){} 猫:继承自动物 狗:继承自动物 跳高的额外功能是一个新的扩展功能,所以要定义一个接口 接口: 跳高 部分猫:实现跳高 部分狗:实现跳高 实现; 从抽象到具体 使用: 使用具体类 */ //定义跳高接口 interface Jumpping { // 跳高功能 public abstract void jump(); } // 定义抽象类 abstract class Animal { // 姓名 private String name; // 年龄 private int age; public Animal() { } public Animal(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 Cat extends Animal { public Cat() { } public Cat(String name, int age) { super(name, age); } public void eat() { System.out.println("猫吃鱼"); } } // 具体狗类 class Dog extends Animal { public Dog() { } public Dog(String name, int age) { super(name, age); } public void eat() { System.out.println("狗吃肉"); } } // 有跳高功能的猫 class JumpCat extends Cat implements Jumpping { public JumpCat() { } public JumpCat(String name, int age) { super(name, age); } public void jump() { System.out.println("跳高猫"); } } // 有跳高功能的狗 class JumpDog extends Dog implements Jumpping { public JumpDog() { } public JumpDog(String name, int age) { super(name, age); } public void jump() { System.out.println("跳高狗"); } } class InterfaceTest { public static void main(String[] args) { // 定义跳高猫并测试 JumpCat jc = new JumpCat(); jc.setName("哆啦A梦"); jc.setAge(3); System.out.println(jc.getName() + "---" + jc.getAge()); jc.eat(); jc.sleep(); jc.jump(); System.out.println("-----------------"); JumpCat jc2 = new JumpCat("加菲猫", 2); System.out.println(jc2.getName() + "---" + jc2.getAge()); jc2.eat(); jc2.sleep(); jc2.jump(); // 定义跳高狗并进行测试的事情自己完成。 } }
2:
/* 老师和学生案例,加入抽烟的额外功能 分析:从具体到抽象 老师:姓名,年龄,吃饭,睡觉 学生:姓名,年龄,吃饭,睡觉 由于有共性功能,提取出一个父类,人类。 人类: 姓名,年龄 吃饭(); 睡觉(){} 抽烟的额外功能不是人或者老师,或者学生一开始就应该具备的,所以,把它定义为接口 抽烟接口。 部分老师抽烟:实现抽烟接口 部分学生抽烟:实现抽烟接口 实现:从抽象到具体 使用:具体 */ //定义抽烟接口 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("抽烟的学生"); } } class InterfaceTest2 { public static void main(String[] args) { // 测试学生 SmokingStudent ss = new SmokingStudent(); ss.setName("abc"); ss.setAge(27); System.out.println(ss.getName() + "---" + ss.getAge()); ss.eat(); ss.sleep(); ss.smoke(); System.out.println("-------------------"); SmokingStudent ss2 = new SmokingStudent("efg", 30); System.out.println(ss2.getName() + "---" + ss2.getAge()); ss2.eat(); ss2.sleep(); ss2.smoke(); // 测试老师 } }
时间: 2024-10-06 10:51:37