b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

微信java [ 转 ]C++和JAVA的区别(10)

电脑杂谈  发布时间:2018-01-06 03:03:59  来源:网络整理

(27) Java中的继承具有与C相同的效果,但采用的语法不同。

Java用extends关键字标志从一个基础类的继承,并用super关键字指出准备在基础类中调用的方法,它与我们当前所在的方法具有相同的名字(然 而,Java中的super关键字只允许我们访问父类的方法——亦即分级结构的上一级)。通过在C中设定基础类的作用域,我们可访问位于分级结构较深 处的方法。亦可用super关键字调用基础类构建器。正如早先指出的那样,所有类最终都会从Object里自动继承。和C不同,不存在明确的构建器初 始化列表。但编译器会强迫我们在构建器主体的开头进行全部的基础类初始化,而且不允许我们在主体的后面部分进行这一工作。通过组合运用自动初始化以及来自 未初始化对象句柄的异常,成员的初始化可得到有效的保证。

b举例说明

public class Foo extends Bar

{

publicFoo(String msg)

{

super(msg); Calls base constructor }

public baz(int i)

{ Override

super.baz(i);

Calls base method

}

}

(28) Java中的继承不会改变基础类成员的保护级别。

我们不能在Java中指定public,priv ate或者protected继承,这一点与C是相同的。此外,在衍生类中的优先方法不能减少对基础类方法的访问。例如,假设一个成员在基础类中属于public,而我们用另一个方法代替了它,那么用于替换的方法也必须属于public(编译器会自动检查)。

(29) Java提供了一个interface关键字,它的作用是创建抽象基础类的一个等价物。

在其中填充抽象方法,且没有数据成员。这样一来,对于仅仅设计成一个接口的东西,以及对于用extends关键字在现有功能基础上的扩展,两者之间便产生 了一个明显的差异。不得用abstract关键字产生一种类的效果,因为我们不能创建属于那个类的一个对象。一个abstract(抽象)类可包含抽 象方法(尽管并不要求在它里面包含什么东西),但它也能包含用于具体实现的代码。因此,它被限制成一个单一的继承。通过与接口联合使用,这一方案避免了对 类于C虚拟基础类那样的一些机制的需要。

为创建可进行“例示”(即创建一个实例)的一个interface(接口)的版本,需使用implements关键字。它的语法类于继承的语法,如下所示:

public interface Face

{

public void smile();

} public class Baz extends Bar implements Face

{

public void smile( )

{

System.out.println("a warm smile");

}

}

(30) Java中没有virtual关键字,因为所有非static方法都肯定会用到动态绑定。

在Java中,程序员不必自行决定是否使用动态绑定。C之所以采用了virtual,是由于我们对性能进行调整的时候,可通过将其省略,从而获得执行 效率的少量提升(或者换句话说:“如果不用,就没必要为它付出代价”)。virtual经常会造成一定程度的混淆,而且获得令人不快的结果。final关 键字为性能的调整规定了一些范围——它向编译器指出这种方法不能被取代,所以它的范围可能被静态约束(而且成为嵌入状态,所以使用C非virtual 调用的等价方式)。这些优化工作是由编译器完成的。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/sanxing/article-58491-10.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...