[JAVA 基础] JAVA 抽象类

2021/7/11 17:06:17

本文主要是介绍[JAVA 基础] JAVA 抽象类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.

        在类中声明一个方法,这个方法没有实现体,是一个“空”方法。这样的方法就叫抽象方法,使用修饰符“abstract"。当一个类有抽象方法的时候该类必须被声明为抽象类

       Hero类可以在不提供抽象方法的前提下,声明为抽象类。一旦一个类被声明为抽象类,就不能够被直接实例化。

 

         Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Cannot instantiate the type Student

        线程“main”java.lang中出现异常。错误:未解决的编译问题:
无法实例化类型Student

2.抽象类和接口的区别

另:接口

Java 抽象类和接口,看这一篇就够了

        我们知道,有抽象方法的类被称为抽象类,也就意味着抽象类中还能有不是抽象方法的方法。这样的类就不能算作纯粹的接口,尽管它也可以提供接口的功能——只能说抽象类是普通类与接口之间的一种中庸之道。

        接口(英文:Interface),在 Java 中是一个抽象类型,是抽象方法的集合;接口通过关键字 interface 来定义。接口与抽象类的不同之处在于:

        1、抽象类可以有方法体的方法,但接口没有。 2、接口中的成员变量隐式为 static final,但抽象类不是的。 3、一个类可以实现多个接口,但只能继承一个抽象类。

        以下示例展示了一个简单的接口:

// 隐式的abstract
interface Coach {
	// 隐式的public
	void defend();
	void attack();
}

        接口是隐式抽象的,所以声明时没有必要使用 abstract 关键字;接口的每个方法都是隐式抽象的,所以同样不需要使用 abstract 关键字;接口中的方法都是隐式 public 的。

        和抽象类一样,接口也不能直接被实例化,它需要一个类来实现它

        实现一个接口需要用到关键字 implements,它表示:“我这个类遵从了接口的协议,如果你想使用我,看接口就行了,具体实现不用关心。”

JAVA 抽象类详解

区别1:
子类只能继承一个抽象类,不能继承多个
子类可以实现多个接口


区别2:
抽象类可以定义
public,protected,package,private
静态和非静态属性
final和非final属性
但是接口中声明的属性,只能是
public
静态
final的
即便没有显式的声明

注: 抽象类和接口都可以有实体方法。 接口中的实体方法,叫做默认方法

3.抽象类的意义

抽象类存在的意义和作用

        抽象是将共性抽离出来,产生抽象性概念非具体。

        抽象类和抽象方法作用: 使类的抽象性明确起来,告诉用户和编译器打算怎么使用他们。抽象类还是很有用的重构工具,因为它们使得我们可以很容易地将公共方法沿着继承层次结构向上移动。

        抽象类不可实例化,抽象类包含普通方法和抽象方法。抽象方法只需声明无需方法体。

        子类继承抽象类,父类的抽象方法必须被子类重写,普通方法可不需要重写。

 

抽象类的意义

        1.因为抽象类不能实例化对象,所以必须要有子类来实现它之后才能使用。这样就可以把一些具有相同属性和方法的组件进行抽象,这样更有利于代码和程序的维护。

        比如本科和研究生可以抽象成学生,他们有相同的属性和方法。这样当你对其中某个类进行修改时会受到父类的限制,这样就会提醒开发人员有些东西不能进行随意修改,这样可以对比较重要的东西进行统一的限制,也算是一种保护,对维护会有很大的帮助。
        2.当又有一个具有相似的组件产生时,只需要实现该抽象类就可以获得该抽象类的那些属性和方法。
        比如学校又新产生了专科生这类学生,那么专科生直接继承学生,然后对自己特有的属性和方法进行补充即可。这样对于代码的重用也是很好的体现。



这篇关于[JAVA 基础] JAVA 抽象类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程