标签:
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();
// 测试老师
}
}
标签:
原文地址:http://my.oschina.net/u/2001589/blog/509862