[Java笔记]抽象类和接口
1 /** 2 * @author Rabbit 3 * @version 1.0 4 * created on 2017/2/22 0022. 5 * 抽象类test 6 */ 7 8 9 /*不确定父类方法的时候,就可以用抽象类*/ 10 public class Test { 11 public static void main(String[] args){ 12 Animal animal = new Cat(); 13 // Animal animal = new Animal(); 14 /*一个抽象类是无法被实例化的,但是可以实例化其子类。因为子类有具体的属性或方法*/ 15 animal.cry(); 16 } 17 } 18 19 abstract class Animal{ 20 abstract public void cry(); /*抽象方法不可以有主体。有主体的时候意味着实现这个方法,与抽象概念相悖。*/ 21 22 public void Test(){ 23 /*抽象中可以有实现的方法主体,但不能是abstract修饰。*/ 24 } 25 } 26 27 /*当一个类继承的类是抽象类的话,需要把抽象的所有抽象方法全部实现*/ 28 class Cat extends Animal{ 29 30 @Override 31 public void cry() {/*重写*/ 32 System.out.println("喵~"); 33 } 34 }
/** * author : Rabbit * created on 2017/2/22 0022. * interface test */ public class Test2 { public static void main(String[] args){ Computer computer = new Computer(); Camera camera = new Camera(); Telphone telphone = new Telphone(); computer.useUsb(camera); computer.useUsb(telphone); } } /*接口不可被实例化,而且接口里不允许有方法体,但抽象类可有可无*/ /*接口里面可以有变量,而且本质都是static和final的,不论加不加修饰符*/ /*接口中的变量不可使用private,protected修饰*/ /*接口可以继承别的接口,但是不能继承类*/ interface Usb{ /*接口是更加抽象的抽象类,接口体现了程序的多态和高内聚低耦合的的概念*/ boolean CONNECTION = true; public void Start(); public void Stop(); } /*当一个类实现了接口,就需要把这个接口中的所有方法全部实现*/ /*ps:一个类可以实现多个接口*/ class Camera implements Usb{ @Override public void Start() { System.out.println("检测到设备接入,开始工作。" + Usb.CONNECTION); } @Override public void Stop() { System.out.println("设备连接丢失,工作停止。"); } } /*当一个类实现了接口,就需要把这个接口中的所有方法全部实现*/ class Telphone implements Usb{ @Override public void Start() { System.out.println("检测到移动设备,usb开始工作"); } @Override public void Stop() { System.out.println("移动设备连接丢失,usb停止工作"); } } /*接口也体现了多态(满足了OO原则:高内聚,低耦合)*/ class Computer{ public void useUsb(Usb usb){ usb.Start(); usb.Stop(); } }
1 /*实现接口可以看做是对继承的一种补充。继承是层级的,牵一发而动全身,不太灵活。但是接口就不会这样 2 * 因为它只是针对实现接口的类才起作用*/ 3 public class Test3 { 4 public static void main(String[] args){ 5 LittleMonkey lm = new LittleMonkey(); 6 lm.jump(); 7 lm.fly(); 8 lm.swimming(); 9 } 10 } 11 12 class Monkey{ 13 public void jump(){ 14 System.out.println("嘿咻~"); 15 } 16 } 17 18 interface Fish{ 19 public void swimming(); 20 } 21 22 interface Bird{ 23 public void fly(); 24 } 25 26 class LittleMonkey extends Monkey implements Fish,Bird{ 27 28 @Override 29 public void swimming() { 30 System.out.println("新技能get : 游泳"); 31 } 32 33 @Override 34 public void fly() { 35 System.out.println("新技能get : 飞翔"); 36 } 37 }