通过案例的形式,结束接口部分。
/*
猫狗案例,加入跳高的额外功能 分析:从具体到抽象
猫:
姓名,年龄
吃饭,睡觉
狗:
姓名,年龄
吃饭,睡觉 由于有共性功能,所以,我们抽取出一个父类:
动物:
姓名,年龄
吃饭();//吃的不一样,定义为抽象方法
睡觉(){} 猫:继承自动物
狗:继承自动物 跳高的额外功能是一个新的扩展功能,所以我们要定义一个接口
接口:
跳高 部分猫:实现跳高
部分狗:实现跳高
实现;
从抽象到具体,这个具体意思是实现后都是具体内容 使用:
使用具体类
*/
//定义跳高接口
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) {
//定义跳高猫并测试
Jumpping jum = new JumpCat();//多态的方式实现
JumpCat jc = new JumpCat();//自己类对象形式
jc.setName("哆啦A梦");
jc.setAge(3);
System.out.println(jc.getName()+"---"+jc.getAge());
jc.eat();
jc.sleep();
jc.jump();
jum.jump();//多态的方式,实现了特殊跳高功能
System.out.println("-----------------"); JumpCat jc2 = new JumpCat("加菲猫",2);
System.out.println(jc2.getName()+"---"+jc2.getAge());
jc2.eat();
jc2.sleep();
jc2.jump(); //定义跳高狗
Jumpping jum1 = new JumpDog();
JumpDog jd = new JumpDog();
jd.setAge(4);
jd.setName("叶晨");
System.out.println(jd.getName()+"-----"+jd.getAge());
jd.eat();
jd.sleep();
jd.jump();
jum1.jump();
System.out.println("-----------------"); JumpDog jd1 = new JumpDog("邱加泺",23);//用自己创建对象。
System.out.println(jd1.getAge()+"------"+jd1.getName());
jd1.eat();
jd1.sleep();
jd1.jump();
}
}
到目前为止,面向对象部分快要结束了。下一篇(http://blog.csdn.net/qq_32059827/article/details/51338014)将会通过一个小案例对面向对象所有内容以案例的形式进行总结。