1.什么是抽象类?
a. 抽象类是仅供派生的类,无法实例化一个抽象类,只能实例化从它派生的类。
b. 抽象类的主要特征在于它包含抽象成员 (abstract member),抽象成员是不具有实现的一个方法或属性,其作用是强制所有派生类提供实现。
c. 由于抽象成员应当是要被重写(override)的,因此这类成员会自动成为virtual成员,而且不能这样显示地声明。
d. 抽象成员不能是private的,否则派生类看不见他们。
2.什么是接口?
a. 接口是抽象类的变体。
b. 接口的一个关键特征是它既不包含实现,也不包含数据。
c. 接口的宗旨是定义由多个类共同遵守的一个契约 ,所以接口中所有成员都必须为public类型。
3. 接口中的声明字段是什么属性?
接口中定义的字段会自动具有static和final属性。
如以下接口:
interface TestI {
public int a = (int) (Math.random() * 10);
public static int b = (int)(Math.random() * 10);
public final int c = (int)(Math.random() * 10);
public static final int d = (int)(Math.random() * 10);
}
在TestI的二进制代码中也可以看出所有字段都是public static final的.
由于字段是static的,所以它们会在首次装载类之后、以及首次访问任何字段之前获得初始化。
public class TestC implements TestI {
public static void main(String[] args){
System.out.println(TestC.a);
System.out.println(TestC.b);
System.out.println(TestC.c);
System.out.println(TestC.d);
}
}
由此可见,字段并不是接口的一部分,而是保存于那个接口的static存储区域中.
4. 接口和抽象类的区别?
a. JAVA类可以实现任意多个接口,却只能继承一个抽象类;在抽象类中,新增一个方法的话,继承类中可以不用作任何处理;而对于接口来说,则需要修改继承类,提供新定义的方法。
b. 接口的所有方法都是抽象的,无论是否将它的方法名显示地声明为抽象地,抽象类的方法却不一定,它可以包含若干个非抽象方法.
c. 接口方法只声明了方法名,无方法体,而抽象类则需要有方法体,尽管方法体可能为空,也要有{}字样,也就是说接口无实现部分,而抽象类可以给出方法的实现部分;
d. 接口的字段必须赋初值,因为它默认就是static final常量,抽象类却不用,但得显示地声明为static的;
e. 接口方法的可见性修饰符只能是public(默认即为),而抽象类方法可见性修饰符可以是public、protected、private或者无修饰符(表示包内可见);
f. 接口不能有构造器,抽象类却可以有构造器,尽管抽象类不能实例化;
g. 接口可以用于支持回调,而继承并不具备这个特点的
5.一个抽象类A里实现了一个接口I, 这个接口有两个方法a(),b(), 但抽象类里只实现了一个方法b(),而且实现为空, 是什么意思?
这个抽象类的子类B可以不实现这个被抽象类实现的方法b(), 而另一个方法a()必须实现, 如果没有这个抽象类, B直接继承接口I则两个方法都必须在B中实现.换句话说:抽象类可以不用实现接口的全部方法!
有的时候需要将接口和抽象类配合起来使用,这样可以为开发者提供相当的便利性,开发者觉得哪个方便就选用哪个。这样的抽象类称为便利类。此时,便利类并不需要实现接口的所有方法,可以留给继承它的子类去实现它们。
这么做并非是没有意义的,当你自己写的类想用接口中个别方法的时候(注意不是所有的方法),那么你就可以用一个抽象类先实现这个接口(方法体中为空),然后再用你的类继承这个抽象类,这样就可以达到你的目的了,如果你直接用类实现接口,那是所有方法都必须实现的。
分享到:
相关推荐
java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例...
在Java编程语言中,抽象类和接口是两种重要的面向对象设计...通过这样的练习,你可以更好地理解和掌握Java中的抽象类与接口,以及它们在实际开发中的应用。在实践中不断尝试和调试,将有助于深化对这两个概念的理解。
Java抽象类与接口实验报告
### Java抽象类与接口的区别 #### 一、引言 在Java编程中,抽象类(Abstract Class)与接口(Interface)都是实现抽象的关键工具。它们各自有着独特的优势和适用场景,掌握这两者的区别有助于开发者更好地设计系统...
1.继承及继承实例 2.方法重写(Overwrite) 3.super关键字 4.方法重载(Overload) 5.final修饰符 6.abstract修饰符 7.抽象类 8.接口 9.接口和抽象类对比 10.接口和抽象类使用场合实例 11.总结
在Java编程语言中,抽象类和接口是两种重要的机制,用于实现代码的抽象和多态性。本章主要探讨了这两个概念以及它们在实际编程中的应用。 首先,抽象类(abstract class)是一种不能被实例化的类,它通常含有至少一...
在Java编程语言中,抽象类(Abstract Class)与接口(Interface)是实现抽象与多态性的两种关键机制。这两种机制的出现,极大地丰富了Java语言的面向对象特性,并为开发者提供了更为灵活的设计选择。下面将从多个...
抽象类和接口实验报告
### 抽象类与接口的区别 #### 一、理解抽象类与接口的基本概念 在面向对象编程中,抽象类和接口都是重要的概念,用于描述共有的特性或行为,但它们在实现方式和用途上有所不同。 **抽象类**: - **定义**:抽象类...
理解抽象类与接口的区别并恰当运用,有助于提升代码的可扩展性和可维护性,使得软件设计更加灵活和面向对象。在进行Java编程时,应根据项目需求和设计原则,合理选择抽象类或接口来实现特定功能,以达到最佳的设计...
#### 抽象类与接口的基本概念 1. **抽象类**:抽象类是一种不能被实例化的类,它可以包含抽象方法(没有实现的方法)和具体方法(有实现的方法)。抽象类的主要目的是为子类提供一种共有的基本结构,子类必须实现...
这里我们将详细讨论这些概念以及抽象类与接口之间的相同点和区别。 首先,让我们来看看抽象类(Abstract Class): 1. 抽象方法是只有声明没有实现的方法,可以视为没有方法体的虚方法。例如: ```csharp public ...
Java 抽象类与接口实验报告 一、实验目的及要求 本实验的目的是掌握 Java 中的抽象类和接口的概念及其应用。通过本实验,学生将了解抽象类和接口的定义、特点及使用场景,并掌握如何使用抽象类和接口来描述不同的...
【C#抽象类与接口方法】在C#编程语言中,抽象类和接口是两种用于实现多态性和封装的关键概念,它们允许我们设计灵活、可扩展的代码结构。 抽象类是一种特殊的类,它不能被实例化,而是作为其他类的基类使用。抽象类...
在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...
学生通过对该项目整体框架的搭建和对动物城信息管理等模块的设计与功能实现,训练了学生对项目框架的搭建、类的封装、抽象类定义与继承、接口的定义与接口的实现等Java OOP面向对象知识点的掌握。 本项目主要包括...
5. **接口与抽象类的区别**:对比两者在使用上的差异,包括继承的数量限制(一个类只能继承一个抽象类,但可以实现多个接口)和成员类型(抽象类可有实例变量,接口则没有)。 6. **适配器模式**:可能会介绍如何...
此书对于你学习Java抽象类和接口有非常大的帮助
### JAVA继承基本类、抽象类、接口的区别与联系 #### 一、概述 在Java语言中,类(Class)的设计是面向对象编程的核心之一。Java提供了三种方式来扩展类的功能:基本类、抽象类和接口。这三者之间既有相似之处,也...
### 抽象类与接口的区别 1. **实例化**:抽象类不能直接实例化,而接口也不能实例化,但是任何类都可以实现接口,而无需继承。 2. **成员实现**:抽象类可以包含抽象和非抽象成员,而接口只能包含抽象成员。 3. **...