抽象类与接口的区别

抽象类:

1.用abstract关键字来修饰一个类时,这个类叫抽象类,用abstract来修饰一个方法时,该方法叫抽象方法。

2.含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写

3.抽象类不能被实例化

4.抽象方法只需要声明,而不需要实现。


接口:

1.接口是抽象方法和常量值的定义的集合。

2.从本质上讲,接口是一种特殊的抽象类,这种抽象类只包含常量和方法的定义,而没有变量和方法的实现。

3.接口中常量通常定义为static final的。

接口的特性:

1.接口可以实现多重实现,而继承只能是单继承。

2.接口中声明的属性默认为public static final(为什么是static的,因为接口本质上是一个抽象类,但是抽象类并不能实例化),也只能是public static final的。

3.接口中只能定义抽象方法,而且这些方法默认为public的,也只能是public的。

4.接口可以继承其他的接口,并添加新的属性和抽象方法。

5.多个无关的类可以实现同一个接口。

6.一个类可以实现多个无关的接口。

7.与继承类似的是,接口与实现类之间存在多态性。

8.class A extends B implements C , D

 代码
package com.jack;

/**
 * 抽象类
 * 抽象类中可以没有抽象方法,但是含有抽象方法的类必须为抽象类
 */
public abstract class Test {
    public int a;
    //抽象方法,抽象方法只需要声明,不需要实现
    public abstract void getA();
    public static void main(String[] args) {
        /**
          *错误,抽象类是不可以被实例化的
          *所以抽象类必须要被继承,抽象方法必须被重写 
          */
         Test t = new Test() ;
    }
}
package com.jack;

public interface Test{
    //在此处,变量是不可以声明为private的,因为接口需要被实现
    //所以在接口中只能是public static final的,并且只能声明常量,而不能是变量
    //只能是static的是因为他无法被实例化,所以只能是静态的
    //常量中声明
    public  static final int a = 1;
    abstract void get();
    public static void main(String[] args) {
        //接口与实现类之间存在多态性
        Test t1 = new B();
        Test t2 = new C();
        System.out.println(Test.a);
    }
}
interface A extends Test{
    //接口可以继承其他的接口,添加新的属性和方法
    int b = 2;
}

/**
 * 多个类可以实现同一接口
 */
class B implements Test{
    @Override
    public void get() {
        
    }
}
class C implements Test{
    @Override
    public void get() {
        
    }
}

/**
 * 一个类可以实现多个接口
 */
class D implements Test, A{
    @Override
    public void get() {
        
    }
}
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值