`

[#0x000D] abstract

    博客分类:
  • Java
EXT 
阅读更多

  abstract的真正含义是“阻止产生对象”(针对类)或是“禁止被对象所拥有”(针对方法,类似static)。

  一个abstract class是不能产生object的。(P.S. 抽象类可以声明引用,不可实例化;类似在使用多态时,我们可以声明一个接口的引用,实际指向一个实现类对象)

  abstract function只有方法声明,没有方法body。

  拥有abstract function的class必须声明为abstract class,否则会编译报错(abstract function不能被对象所拥有,那么包含该abstract function的class自然不能产生对象,所以必须是abstract class)。当然,abstract class不一定非要有abstract function,在某些情况下,我们可能只是单纯地想要某个class不能产生对象,这时就可以用abstract class,对这个abstract class的内部我们没有任何要求。

P.S. 编译器对abstract和后面要提到的interface的处理机制都是Java为了强调抽象的设计方法而在语言方面做的强制规定

  因为abstract class不能产生object,所以主要用来继承。如果一个ext class继承自abstract class,且该abstract class中有abstract function,那么由继承的知识可知,ext class也会有这个abstract function,如果ext class中不覆写这个abstract function,那么这个ext class也必须声明为abstract。

  abstract class作为base class是支持向上转型的,即原来对一般base class的向上转型用法对abstract base class同样适用。

 

分享到:
评论

相关推荐

    最新JAVA等级考试题库.docx

    ** 十六进制数值的赋值需要以 `0x` 或 `0X` 开头,因此正确答案为 `long number = 0x345L;`。 ### 4. 赋值语句的合法性 **题目描述:** 下面的哪个赋值语句是不对的? - A. `float f = 11.1;` - B. `double d = 5.3...

    java 经典面试题

    int x = 010, y = 10, z = 0x10; System.out.println(x + "" + y + "" + z); ``` - **知识点解释**: - `int` 类型变量可以表示整数。 - `010` 是八进制表示法,等同于十进制的 `8`。 - `0x10` 是十六进制表示法...

    2011最新整理Java练习题

    - D) `public abstract class Car { ... }` **解析**: - **选项A**:`abstract` 和 `final` 不能同时用于类声明,因为抽象类无法被实例化而`final` 类则不能被继承,这两个关键字相互矛盾。 - **选项B**:`...

    Java 语言程序设计 (一 )试题.docx

    - 选项B `0x3AC` 和选项D `0x3ABC` 是合法的十六进制表示。 - 选项C `5000` 是合法的十进制表示。 ### 2. 类的属性交换 - **知识点说明**: - 题目中的代码片段展示了如何交换两个对象的属性。 - 选项A `u.x=v...

    JAVA 语言程序设计考试试卷.docx

    long number=0x345L**:正确,十六进制值以0x开头。 正确答案为 **D. long number=0x345L**。 #### 28. 当Frame的大小被改变时, Frame中的按钮的位置也可能被改变,请问此时使用的是什么布局管理器 - **A. ...

    Java全国自考历年考试(参考答案)2.doc

    - **选项D**: `0x3ABC`,同样以`0x`开头,表示这是一个十六进制数,`3ABC`也是合法的十六进制数值。 **正确答案**: A.078 #### 2. 输出结果分析 - **程序代码**: `int x = 10; while (x > 7) { System.out.print...

    Mysql复习题及答案

    因此,在选项D中,“s=s+i+f+d”是正确的,因为它涉及到字符串与数值的拼接操作。 ### 8. 表达式的类型推断 在Java中,当进行不同类型的运算时,表达式的结果类型会根据参与运算的类型自动提升至最宽泛的类型。例如...

    考证 scjp考试题目集

    2. **总结**:在 Java 中,十六进制数以 `0x` 或 `0X` 开头,并且可以附加 `L` 或 `l` 来表示 long 类型。 --- #### 题目五:字符串操作与语法错误 **题目描述**: ```java Which of the following fragments ...

    Java网络编程基础复习题.doc

    - **选项D** `1first` 同样不是一个合法的标识符,原因同选项A。 因此,正确答案是 **B** `_name`。 ### 2. Java调试工具 - **题目解析**:本题考察Java中用于调试的工具。 - **答案解析**: - **选项A** `java...

    java 初学者的复习资料

    接口中的方法默认是public abstract的,无需显式声明。 #### 九、数组的初始化与使用 **知识点16:数组的默认值** - **描述**:考查数组初始化后的默认值。 - **答案解析**:选项C“正确,输出0”是正确的。对于...

    JAVA基础教程

    - `abstract`, `break`, `byte`, `boolean`, `catch`, `case`, `class`, `char`, `continue`, `default`, `double`, `do`, `else`, `extends`, `false`, `final`, `float`, `for`, `finally`, `if`, `import`, `...

    《Java语言程序设计(一)》课后习题答案(课程编号04747)

    例如,将数学表达式`a * b + c / d - e`转化为Java表达式: ```java int a = 5, b = 10, c = 20, d = 4, e = 2; int result = a * b + c / d - e; // 结果为 48 ``` #### 2.4 给定表达式求变量值 假设`a`初始值为...

    贵州电大2022年秋季Java开发基础专省任务01.docx

    选项D中的`0a12`和`0x12`是,但`0a`不是有效的八进制数字。所以,正确的选项是C。 8. **位运算**:Java中的位运算符可以对二进制进行操作。若`a=001001`,执行`a后,a的二进制位向左移三位,即`1001000`,转换为十...

    磨砺营马剑威java培训第二课课程课件

    - **十六进制**: 基数为十六,逢十六进一,在Java中以0x或0X开头。 - **进制转换**: - **二进制与八进制**: 将八进制的每个数字转换为对应的三位二进制。 - **二进制与十六进制**: 将十六进制的每个数字转换为...

    java程序设计(一)09年1月试题

    在选项中,A.078 是八进制整型常量,B.0x3A 是十六进制整型常量,C.5000 是十进制整型常量,D.0x3ABC2 不是合法的整型常量。 2. Java 程序的输出结果 在 Java 程序中,while 循环的执行结果取决于循环条件和循环体...

    Java精选笔试题考卷(附完整答案).docx

    - 选项**D**:“long number = 0x345L;”是正确的。在Java中,十六进制数值前需加上`0x`或`0X`。 4. **浮点型变量赋值** - 错误选项**A**:“float f = 11.1;”。`11.1`默认为`double`类型,应写作`11.1F`或`...

Global site tag (gtag.js) - Google Analytics