java,抽象类与接口的区别

来源:互联网 发布:ceo cfo cmo 知乎 编辑:程序博客网 时间:2024/06/15 02:51
/** * Created by liuyazhou on 2017/4/11. */public interface ZooInterface1 {    //接口是公开的,不能含有私有变量或方法,    //方法只要是声明即可     void ZooInterface1Fun1();}

/** * Created by liuyazhou on 2017/4/10. */public abstract class Animal  extends  Zoo{    //抽象类可以含有私有变量    private Integer animalInteger1;    //抽象类可以含有私有方法,此时要有函数体    private   void Run(){        System.out.println("Run");    }    public abstract void cry();    public abstract void eat();}

/** * Created by liuyazhou on 2017/4/10. */public class Cat extends Animal {    @Override    public void cry() {        System.out.println("猫哭...");    }    @Override    public void eat() {    }    @Override    public void zooFun1() {        System.out.println("Cat zooFun1....");    }    @Override    public void ZooInterface1Fun1() {    }}

/** * Created by liuyazhou on 2017/4/10. */public class Dog extends Animal {    @Override    public void cry() {        System.out.println("狗哭...");    }    @Override    public void eat() {    }    @Override    public void zooFun1() {        System.out.println("Dog zooFun1....");    }    @Override    public void ZooInterface1Fun1() {    }}

/** * Created by liuyazhou on 2017/4/10. */public abstract class Zoo implements ZooInterface1 {    public abstract void  zooFun1();}

/** * Created by liuyazhou on 2017/4/11. */public interface ZooInterface1 {    //接口是公开的,不能含有私有变量或方法,    //方法只要是声明即可     void ZooInterface1Fun1();}

public class Main {    public static void main(String[] args) {        Animal cat = new Cat();        Animal dog = new Dog();        cat.cry();        dog.cry();        cat.zooFun1();        dog.zooFun1();    }}
输出:
猫哭...狗哭...Cat zooFun1....Dog zooFun1....

1 接口不是类,抽象类是不完整的类

2接口是公开的,里面不能有私有的方法或变量,而抽象类是可以有私有方法或私有变量的

3 一个类可以实现多个接口,但只能继承一个超类

4 抽象类的是对对象的抽象,接口是对行为的抽象

5 抽象类的设计师自底向上的,接口的设计师自顶向下的

0 0
原创粉丝点击