接口和抽象类

接口和抽象类

抽象类

抽象方法:抽象方法是一种特殊的方法,只有声明而没有代码块;

public abstract void method();

抽象类:含有抽象方法的类就是抽象类,抽象类也必须用abstract修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象,但是抽象类也可以含有一般类所拥有的成员变量和普通方法

public abstract class Person(){
	public abstract void methodAbstract();
    public void methodNormal();
}

意义:抽象类的创建就是为了继承而存在

抽象类和普通类的不同:

  1. 抽象方法必须为public或protected(如果是private那么将无法被子类所继承,失去了他的意义)
  2. 抽象类不能创建对象
  3. 如果一个子类继承抽象类,则必须实现抽象方法,否则该方法也需声明为抽象方法,且子类也需声明为抽象类

其他方面抽象类和一般类无区别

接口

接口:软件工程中,泛指被别人调用的方法或函数,是对行为的抽象。

public interface MyInterface{
	public void myMethod();
}

接口中可以含有变量和方法,但是接口中的变量会被隐式地指定为public static final 变量(且只能为此),而方法会被隐式地指定为public abstract 方法(且只能为此),并且接口中的所有方法都不能有具体实现,所以接口中的方法全都是抽象方法。

可以看出,接口是比抽象类更加抽象的存在,并且在一般情况下不会在接口中定义变量。

一个一般类实现某个接口,就必须实现其中所有方法,如果是抽象类,可以不实现该接口中的抽象方法。

抽象类和接口的区别
  1. 语法层面的区别

    • 抽象类中一般成员方法可以提供方法的实现细节,而接口中只能存在public abstract方法
    • 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public final static类型
    • 接口中不能还有静态代码块和静态方法,而抽象类可以
    • 一个类只能继承自一个类,而一个类可以实现多个接口
  2. 设计层面的区别

    • 抽象类是对事物的抽象,即对类抽象,包括属性和行为;而接口是对行为抽象,是对类的局部(行为)抽象。
    • 抽象类是一种模板类设计,如果要添加新的方法,可以直接在抽象类中添加具体实现,子类可以不变更;接口是一种辐射类设计,如果接口发生变更,那么所有实现接口的类都需要进行相应的改动。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值