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同样适用。
分享到:
相关推荐
** 十六进制数值的赋值需要以 `0x` 或 `0X` 开头,因此正确答案为 `long number = 0x345L;`。 ### 4. 赋值语句的合法性 **题目描述:** 下面的哪个赋值语句是不对的? - A. `float f = 11.1;` - B. `double d = 5.3...
int x = 010, y = 10, z = 0x10; System.out.println(x + "" + y + "" + z); ``` - **知识点解释**: - `int` 类型变量可以表示整数。 - `010` 是八进制表示法,等同于十进制的 `8`。 - `0x10` 是十六进制表示法...
- D) `public abstract class Car { ... }` **解析**: - **选项A**:`abstract` 和 `final` 不能同时用于类声明,因为抽象类无法被实例化而`final` 类则不能被继承,这两个关键字相互矛盾。 - **选项B**:`...
- 选项B `0x3AC` 和选项D `0x3ABC` 是合法的十六进制表示。 - 选项C `5000` 是合法的十进制表示。 ### 2. 类的属性交换 - **知识点说明**: - 题目中的代码片段展示了如何交换两个对象的属性。 - 选项A `u.x=v...
long number=0x345L**:正确,十六进制值以0x开头。 正确答案为 **D. long number=0x345L**。 #### 28. 当Frame的大小被改变时, Frame中的按钮的位置也可能被改变,请问此时使用的是什么布局管理器 - **A. ...
- **选项D**: `0x3ABC`,同样以`0x`开头,表示这是一个十六进制数,`3ABC`也是合法的十六进制数值。 **正确答案**: A.078 #### 2. 输出结果分析 - **程序代码**: `int x = 10; while (x > 7) { System.out.print...
因此,在选项D中,“s=s+i+f+d”是正确的,因为它涉及到字符串与数值的拼接操作。 ### 8. 表达式的类型推断 在Java中,当进行不同类型的运算时,表达式的结果类型会根据参与运算的类型自动提升至最宽泛的类型。例如...
2. **总结**:在 Java 中,十六进制数以 `0x` 或 `0X` 开头,并且可以附加 `L` 或 `l` 来表示 long 类型。 --- #### 题目五:字符串操作与语法错误 **题目描述**: ```java Which of the following fragments ...
- **选项D** `1first` 同样不是一个合法的标识符,原因同选项A。 因此,正确答案是 **B** `_name`。 ### 2. Java调试工具 - **题目解析**:本题考察Java中用于调试的工具。 - **答案解析**: - **选项A** `java...
接口中的方法默认是public abstract的,无需显式声明。 #### 九、数组的初始化与使用 **知识点16:数组的默认值** - **描述**:考查数组初始化后的默认值。 - **答案解析**:选项C“正确,输出0”是正确的。对于...
- `abstract`, `break`, `byte`, `boolean`, `catch`, `case`, `class`, `char`, `continue`, `default`, `double`, `do`, `else`, `extends`, `false`, `final`, `float`, `for`, `finally`, `if`, `import`, `...
例如,将数学表达式`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`初始值为...
选项D中的`0a12`和`0x12`是,但`0a`不是有效的八进制数字。所以,正确的选项是C。 8. **位运算**:Java中的位运算符可以对二进制进行操作。若`a=001001`,执行`a后,a的二进制位向左移三位,即`1001000`,转换为十...
- **十六进制**: 基数为十六,逢十六进一,在Java中以0x或0X开头。 - **进制转换**: - **二进制与八进制**: 将八进制的每个数字转换为对应的三位二进制。 - **二进制与十六进制**: 将十六进制的每个数字转换为...
在选项中,A.078 是八进制整型常量,B.0x3A 是十六进制整型常量,C.5000 是十进制整型常量,D.0x3ABC2 不是合法的整型常量。 2. Java 程序的输出结果 在 Java 程序中,while 循环的执行结果取决于循环条件和循环体...
- 选项**D**:“long number = 0x345L;”是正确的。在Java中,十六进制数值前需加上`0x`或`0X`。 4. **浮点型变量赋值** - 错误选项**A**:“float f = 11.1;”。`11.1`默认为`double`类型,应写作`11.1F`或`...