Java抽象类与接口的区别

抽象类与接口的区别(面试题)

  • 在实际的开发之中可以发现抽象类和接口的定义形式是非常相似,从 jdk1.8 开始实际上就特别明显了 ,因为在 jdk1.8里面
  • 接口也可以定义 default 或者 static 方法了,但是这两者依然是有着明显的定义区别和使用区别的
 * 	NO            区别                           抽象类								接口
 *  1	   	    定义关键字				abstract class 抽象类名称 			interface 类名称	
 *  2			 组成			构造,普通方法,静态方法,全局常量 ,普通成员			抽象方法,全局常量,普通方法,static方法                 
 * 	3			 权限			可以使用各种权限 定义							只能使用public定义
 * 	4			子类使用			子类通过 extends 关键字可以继承一个抽象类		子类使用 implements 关键字可以实现多个接口
 *  5		    两者关系			抽象类可以实现多个接口							接口不允许继承抽象类,但是允许继承多个父接口
 *  6			使用				1.抽象类或接口必须定义子类;
 *  							2. 子类一定要覆写抽象类或接口中的全部抽象方法
 *  							3.通过子类的向上装型实现抽象类或 接口对象实例化。
package nterface;

interface IMessage {
	 public void get () ; 
	 class EatRalr implements IMessage {
			public EatRalr(Eatproxys eatproxys) {
				// TODO Auto-generated constructor stub
			}

			public void get () {
				System.out.println("[真实主类]得到一份食物,而后开始吃饭");	
			}
		}
		class Eatproxys implements IMessage {
			private IMessage get ; //为吃而服务
			public Eatproxys() { //一定要有一个代理项
				// TODO Auto-generated method stub
				this.get = get;
			}
			public void get () {
				this.get();
				this.get.get();
				this.clear();
			}
			public void prepare() { //准备吃的过程
				// TODO Auto-generated method stub
				System.out.println("[代理主类]1.购买食材。 "); 
				System.out.println("[代理主类]2.处理食材。 ");
			}
			public void clear () {
				System.out.println("[代理主类]3.收拾碗筷。 ");
			}
			public static void main(String[] args) {
				// TODO Auto-generated method stub
				IMessage eat = new EatRalr(new Eatproxys());
				eat.get();
			}

		}
}

输出结果:

[真实主类]得到一份食物,而后开始吃饭
  • 当抽象类和接口都可以使用的情况下优先考虑接口,因为接口可以避免子类的单继承局限
  • 从设计角度而言,也要先从接口来进行项目的整体设计
  • 接口是第一设计思考,抽象类,普通类,普通方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值