Java中普通类、抽象类、接口三者的区别和联系

1. 抽象类

1.1 抽象方法理解

定义:
	只有方法的申明,没有具体的实现即方法体。
例如:
	abstract void test();
注意:
	抽象方法必须使用abstract修饰,否则编译时会报错。
		

1.2 抽象类的定义

定义:
	包含抽象方法的类,称为抽象类。
注意:
	这种理解是有些片面的,一个抽象类可以不包含抽象方法;但是实际使用中不会
这样定义。因为抽象类是不可以创建对象的,如果不包含抽象方法的话就失去了定义
抽象类的实际意义了。

在这里插入图片描述
1.3 抽象类和普通类的区别

1.抽象方法必须被访问修饰符public或protected修饰,否则子类无法实现抽象方
  法。(编译不通过)
2.抽象类不能创建对象
3.一个类继承于抽象类,子类必须实现父类所有的抽象方法;否则将子类定义为
  abstract。 
   

在这里插入图片描述
1.4 抽象类为什么不能创建对象?(个人理解,仅供参考)

1.抽象类包含抽象方法,所包含的信息不够具体,因而构建的对象也不完整
2.java本身也限制了这种操作,编译时会报错

在这里插入图片描述

2. 接口

2.1 接口的理解

定义:
	接口可以包含变量(public static final)和方法,是对一类事物属性和方
法更高程度的抽象,对修改关闭,对扩展开放,体现了开闭原则。对外提供一种统一的
协议,给事项接口的对象提供统一的属性,所以接口的属性必然是常量,只能读不能改

注意:
	1.接口中的变量被隐式的指定为public static final 即常量,一般情况下
      接口中不定义变量。
    2.接口中的方法被隐式的指定为public abstract

例如:
	源码:
	public interface Test{
		void test();
	}
	编译后:
	public abstract interface Test{
		public abstract void test();
	}

在这里插入图片描述
2.2 JDK1.8接口的新特性
接口中除了定义抽象方法外可以定义静态方法和default默认方法了

在这里插入图片描述

静态方法的调用:
	通过接口名调用即可。
default方法的调用:
	通过实例对象调用。

在这里插入图片描述

2.3 抽象类和接口的区别

1.抽象类可以提供成员方法的实现细节,接口中只能存在public abstract方法,
  JDK1.8之后接口中可以定义static和default方法弥补了这一点。
2.抽象类中成员变量可以是各种类型的,而接口中只能是public static final。
3.接口中不能包含代码块和静态代码块,抽象类是可以的。
4.一个类只能继承一个抽象类,却可以实现多个接口。

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值