[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 }

 

posted @ 2017-02-23 09:06  木栩  阅读(277)  评论(0编辑  收藏  举报