<center>JAVA与C++的差异(2)</center>
JAVA的面向对象
类的所有方法,均为虚方法(虚函数)
关键字 | 作用 |
---|---|
instanceof |
检查当前类是否属于某个类的派生类,返回值BOOL 类型 |
extends |
继承关键字,声明当前类继承于什么基类 |
interface |
声明接口类, 无需实现代码,仅为声明接口,表明此类至少有一个纯虚方法,无法拥有非Static 和Final 之外的字段 ,接口方法默认为公有 |
implements |
基类为接口类, 实现基类的纯虚方法 |
final |
相当于C++的Const
|
Abstraction |
抽象类, 无法被实例的类, 一个纯虚基类, 派生类继承,必须实现基类的方法或继续声明为抽象的方法 |
继承同C++, 关键字变为
extends
不支持多重继承,但是提供多重继承功能, 可以实现多个基类的方法(即多重继承)
方法重写规则
即C++的派生类对基类的虚函数覆盖
派生类中同名,同参,同返回值,基类中属性为public
或protect
等可继承的虚函数
• 重写方法的参数列表应该与原方法完全相同。
• 返回值类型应该和原方法的返回值类型一样或者是它在父类定义时的子类型。
• 重写函数访问级别限制不能比原函数高。举个例子:如果父类方法声明为公有的,那么子类中的重写方法不能是私有的或是保护的。
• 只有被子类继承时,方法才能被重写。
• 方法定义为 final,将导致不能被重写。
• 一个方法被定义为 static,将使其不能被重写,但是可以重新声明。
• 一个方法不能被继承,那么也不能被重写。
• 和父类在一个包中的子类能够重写任何没有被声明为 private 和 final 的父类方法。
• 和父类不在同一个包中的子类只能重写 non-final 方法或被声明为 public 或 protected 的方法。
• 一个重写方法能够抛出任何运行时异常,不管被重写方法是否抛出异常。然而重写方法不应该抛出比被重写方法声明的更新更广泛的已检查异常。重写方法能够抛出比被重写方法更窄或更少的异常。
由于JAVA 无法使用C++的
::
作用域符, 所以提供了一个super
的关键字,以供派生类调用基类的方法
多态
多态同C++, 派生类指针转基类指针调用虚函数, 由于JAVA没有指针,则为引用赋值
接口
(类无法多重继承)接口类可继承多个接口:
public interface Hockey extends Sports, Event
JAVA包
JAVA包名同C++命名空间的作用
包名一般为小写,避免与类的方法重名
包的导入用 import
关键字
- 可以使用 import 关键字和通配符(*)来导入。例如:
import packName.*;
- 可以使用 import 关键字来导入类本身。例如:
import packName.ClassName;
注: 一个类的文件可以包含任意数量的导入语句。这些导入语句必须位于包声明语句之后和类的定义语句之前。