通过案例的形式,结束接口部分。
/* 猫狗案例,加入跳高的额外功能 分析:从具体到抽象 猫: 姓名,年龄 吃饭,睡觉 狗: 姓名,年龄 吃饭,睡觉 由于有共性功能,所以,我们抽取出一个父类: 动物: 姓名,年龄 吃饭();//吃的不一样,定义为抽象方法 睡觉(){} 猫:继承自动物 狗:继承自动物 跳高的额外功能是一个新的扩展功能,所以我们要定义一个接口 接口: 跳高 部分猫:实现跳高 部分狗:实现跳高 实现; 从抽象到具体,这个具体意思是实现后都是具体内容 使用: 使用具体类 */ //定义跳高接口 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)将会通过一个小案例对面向对象所有内容以案例的形式进行总结。