Java抽象类与接口的异同

抽象类(abstract)

指在普通类的结构里面增加抽象方法的组成部分;即一个父类设计得非常抽象,以至于它都没有任何具体的实例。这样的的类称为抽象类。抽象类要使用abstract关键字声明。

实例:

public abstract class Action{
	public abstract void doing();//抽象类型方法,无方法体
	public void test(){
	};//普通方法
}

class son extends Acticon{
	@Override
	public void doing(){
		System.out.println("doing");
	}
}

使用限制:

1. 由于抽象类里会存在一些属性,那么抽象类中一定存在构造方法,其存在目的是为了属性的初始化。并且子类对象实例化的时候,满足先执行父类构造,之后再执行子类构造的顺序。

2.抽象类不可以用final声明,因为final定义的类不能又子类,而抽象类必须有子类。

3.外部抽象类不允许使用static声明,而内部的抽象类运行使用static声明。使用static声明的内部抽象类相当于一个外部抽象类,继承的时候使用“外部类.内部类”的形式表示类名称。

4.抽象类不能使用new操作符来初始化。但仍然可以定义它的构造方法,其构造方法在它的子类的构造方法中调用。

4.所有的子类如果要想正常的完成操作,必须按照指定的方法进行覆写才可以,而这个时候抽象类所起的功能就是一个类定义模板的功能。

接口(interface)

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。接口被看着一种特殊的类,每个接口都被编译为独立的字节码文件。

与抽象类相似,可以使用接口作为引用变量数据类型或类型转换的结果;不能使用new操作符创建接口实例。一个接口就是描述一种能力。接口的作用就是告诉类其要实现接口代表的功能。

实例:

public interface UserDao{
	public static final int age=33;
    public abstract void doing();

    public abstract int insert(A a);
}

public class UserTest implements UserDao{
	public void doing(){
		System.out.println("doing");
	}
	public void insert(A a){
		System.out.println("xingzheng");
	}
}

使用限制:

1.接口中所有定义的方法中其实都是抽象的public abstract

2.变量只能为public static final类型的

抽象与接口的区别:

1. 抽象类要被子类继承,接口要被子类实现;

2. 抽象类中可为普通变量,而接口中变量全部为公共静态变量

3. 抽象类中可以有方法的实现(但不可以实例化),接口中全部为方法的声明,

4. 抽象类中可以有构造函数,接口中不可以有构造函数,

5. 抽象类必须被单继承,而接口可以多实现(一个类可以实现不止一个接口)

6. 抽象类可以有非抽象方法,而接口中方法全部为抽象方法。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值