java 编程思想复用类_《java编程思想》_第七章_复用类

复用代码是java众多引人注目的功能之一。但是想要成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须能够做更多的事情。

一、继承语法

继承是所有OOP语言和JAVA语言不可缺少的组成部分,当创建一个类时,总是在继承,因此,除非已明确指出要从其他类中继承,否则,就是隐式地从java的标准根类Object继承。

继承并不只是复制基类的接口,当创建了一个导出类的对象时,该对象包含了一个基类的子对象,这个子对象与用基类直接创建对象是一样的,二者的区别在于,后者来自外部,而基类的子对象被包装在导出类对象的内部。对于基类子对象的正确初始化也是至关重要的,而且也仅有一种方法来保证这一点:在构造器中调用基类构造器来执行初始化,而基类构造器具有执行基类初始化所需要的所有知识和能力。class Art{

Art(){

System.out.println("art constructor");

}

}

class Drawing extends Art{

Drawing(){

System.out.println("drawing constructor");

}

}

public class Cartoon extends Drawing{

public Cartoon(){

System.out.println("cartoon constructor");

}

public static void main(String[] args){

Cartoon c = new Cartoon();

}

}

运行结果:

art constructor

drawing constructor

cartoon constructor

构建过程是从基类“向外”扩散的,所以基类在导出类构造器可以访问它之前,就已经完成了初始化。如果没有默认的基类构造器,或者想调用一个带参数的基类构造器,就必须用关键字super显示地编写调用基类构造器的语句,并传入合适的参数列表。对上面的代码稍作修改class Art{

Art(int i){

System.out.println("art constructor");

}

}

class Drawing extends Art{

Drawing(int i){

super(i);

System.out.println("drawing constructor");

}

}

public class Cartoon extends Drawing{

public Cartoon(){

super(11);

System.out.println("cartoon constructor");

}

public static void main(String[] args){

Cartoon c = new Cartoon();

}

}

运行结果没有变化,但是如果不显示地调用基类的构造方法,编译器将会报错,无法找到基类的构造器。而且,调用基类构造器必须是在导出类构造器中要做的第一件事。

二、向上转型

由导出类转型成基类,在继承图上是向上移动的,因此一般称为向上转型。由于向上转型是从一个较专用类型向较通用类型转换,所以总是很安全的。

三、final关键字

根据上下文环境,java的关键字final的含义存在着细微的差别,但通常它是指“这是无法改变的”。

1.final数据

有些数据的恒定不变时很有用的,比如:一个永不改变的编译时常量,一个在运行时被初始化的值,而你不希望它被改变。带有恒定初始值(即编译期常量)的final static基本类型全用大写字母命名,并且字与字之间用下划线隔开。java允许在参数列表中以声明的方式将参数指定为final,这意味着你无法在方法中更改参数引用所指向的对象。

2.final方法

使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义,这是出于设计的考虑,想要确保在继承中使方法行为保持不变,并且不会被覆盖。过去的第二个原因是效率,在java的早期实现中,如果将一个方法指明为final方法,就是同意编译器将针对该方法的所有调用都转为内嵌调用。但是这种做法正在逐渐受到劝阻,应该让编译器和jvm去处理效率问题,只有在想明确禁止覆盖时,才将方法设置为final。

3.final类

当将某个类的整体定义为final时,就说明你不打算继承该类,而且也不允许别人这样做。

四、初始化及类的加载

在对类的加载过程中,编译器会注意到它是否有基类,如果有,则会加载基类,不管你是否打算产生一个该基类的对象,这都要发生。如果该基类还有其自身的基类,那么第二个基类就会被加载,如此类推。接下来,根基类中的static会被初始化,然后是下一个导出类,以此类推,这种方式很重要,因为导出类的static初始化可能会依赖于基类成员是否被正确初始化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java编程思想》是一本关于Java编程的经典著作,作者是美国计算机科学家Bruce Eckel。该书是一本系统而全面的介绍Java编程的指南,从基础知识到高级应用都有涉及。 该书通过讲解Java语言的基本概念和编程技巧,帮助读者建立起正确的编程思想和方法。它涵盖了许多编程范式和设计原则,如面向对象编程、泛型编程、多线程编程等。此外,该书还强调了良好的代码规范和代码复用的重要性。 万维网(World Wide Web)是一种全球性的互联网服务,它是通过互联网传输超文本的一种方式。万维网是互联网最重要的组成部分之一,它允许用户通过浏览器在网络上查看和访问文档,这些文档包含文本、图像、音频、视频等多种媒体类型。 Java编程与万维网密切相关,Java提供了丰富的库和工具,使得开发者能够轻松地开发基于万维网的应用程序。Java可以用于开发Web服务器、Web应用程序和客户端应用程序等。通过使用Java编程,开发者可以利用Java的跨平台特性,编写出兼容不同操作系统和设备的应用程序。 在万维网开发中,Java编程思想起着重要的指导作用。它强调了面向对象的思想和模块化设计,使得开发者能够更好地组织和管理代码。Java的丰富的库和工具也提供了很多方便的功能和解决方案,使得开发者能够更高效地开发Web应用程序。 总之,《Java编程思想》是一本帮助读者深入理解Java编程的重要参考书,它对于万维网开发起到了指导和启发的作用。通过学习和掌握其中的编程思想,开发者可以更好地应用Java技术进行万维网开发工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值