根据实例理解Java中的抽象类和接口,以及两者的区别

来源:互联网 发布:视频剪辑专用软件 编辑:程序博客网 时间:2024/06/06 17:10

抽象类:

package practice;/** * Created by fangjiejie on 2016/11/21. */public abstract class P32 {    //abstract int a=10;错误的,abstract只能修饰方法和类不能修饰变量    int a;    protected int b; //抽象类中可以包含普通类中任意成员    private void setB(){        System.out.println("bbbbbbbb");    }    //private abstract void setA();错误的,抽象方法不能是私有的    abstract void setA();//含有抽象方法的一定是抽象类(只是声明),                         // 抽象方法不能在抽象类实现而是由继承它的类实现    abstract String hello();}class P320 extends P32{//抽象类一旦被继承,抽象类中的所有的抽象方法一定要被实现,                         //一旦不能实现,那么该类也只能被定义为抽象类    void setA(){       a=100;    }     String hello(){        return " 你好 ~";    }    public static void main(String[] args) {          //P32 my=new P32();错误的,抽象类不能被实例化    }}

接口:

package practice;/** * Created by fangjiejie on 2016/11/21. */public interface P33{//接口是抽象方法和常量值的定义的集合    //接口中的变量全都是常量 ,默认public abstract    int a=10;    //接口中的方法默认为public static final    void A();}interface P333 extends P3333,P33{//接口可以继承接口,并可以实现多继承接口    void B();}interface P3333 {    void C();}class PP33 implements P33,P333{//一个类可以实现多个接口    public void A(){//实现接口中的方法重写,权限为public        System.out.println("haha");    }    @Override    public void B(){        System.out.println("xixixi");    }    public void C(){        System.out.println("hehehe");    }}class PPP33 extends PP33 implements P33{//一个类可以同时继承类和实现接口,                                           // 继承在前实现在后    public void D(){    }}

抽象类与接口的区别:

1.接口中的方法都是抽象的,而且是公共的,抽象类中可以有一般方法,访问作用域可以是四种修饰符,抽象方法不能是private;
2.接口中没有变量,都是常量,而抽象类中有变量和常量
3.类和接口的关系是implements是实现,而类和抽象类的关系是继承extends
4.类可以实现多个接口,但只能继承一个抽象类
5.接口可以多继承,但不能实现。
6.抽象类只能有一个父类

0 0
原创粉丝点击