复用类

  1. 组合语法 将对象引用置于新类中即可.初始化组合对象的方式有

    • 在定义处,可以保证在构造器执行前初始化
    • 构造器中
    • 惰性初始化,只在要使用时初始化
    • 使用实例初始化
  2. 继承

    继承时会自动获得父类所有的域和方法

基类初始化,基类构造器会在子类构造器调用之前调用,若是基类不存在无参数默认构造器,则需要通过super显式调用基类构造器

  1. 代理,使用方法暴露子对象的接口

确保正确清理

将清理方法放在final中,最好编写自己的清理方法,不要使用finalize()

名称屏蔽

子类会拥有所有父类的重载函数,切都可以调用

向上转型

子类可以向上转型变为基类,因为子类的接口一定大于等于基类

final关键字

指定数据不可变,若是修饰引用则表明引用指向的对象不能变,但是对象自身可以被修改

static的final常量只会在类加载时初始化一次

非static的final会在每次对象创建时初始化.

final的基本类型常量为编译时常量 会被编译器优化.

final参数指参数不可更改.空白final,可以不指定初始值,但一定要在使用前初始化,使其与对象绑定,同类的不同对象拥有不同的值.

final方法指 方法锁定不能被覆盖.java初期也会使用final方法进行效率优化,因为早期java实现中可能会将final方法的调用转为内嵌调用,但后来已经被废除,因为可能方法太大导致内嵌调用会带来效率下降的问题,新的hotspot技术会负责效率问题.

final类不可被继承,所有的方法隐式指定为final.

初始化及类的加载

java类的代码只有在初次使用时才会加载

类的初始化过程: 当运行某个类时,试图访问它的main方法,当发现有基类时会先加载基类.一直加载到最根部的基类,然后从根开始进行static初始化.到达本身后开始进行对象的创建,先是将对象内存全部设置为0,然后递归调用基类构造器,最后进行构造器剩余部分.

总结

继承复用的是接口,组合复用的是旧类.

除非你需要新的类可以向上转型,否则一般应优先使用组合.

每个类都应该有特定用途,不应该太大,如果一个类很大就要考虑将该类分成多个小类.

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

来自为知笔记(Wiz)

时间: 2024-10-13 03:20:37

复用类的相关文章

Java复用类

Java复用类 Java复用类一般有两种方法. 一,组合:在新的类中产生现有类的对象.由于新的类是由现有类的对象所组成,所以这种方法成为组合. import java.util.*; class WaterSource{ private String s; WaterSource(){ System.out.println("WaterSource()"); s="constructed"; } public String toString(){ return s;

Java编程思想学习(五) 复用类

1.继承与组合 复用类的方法有两种:继承与组合.继承就不多说了,组合就是直接在类中new一个对象. 数组也是对象,使用数组也是组合的一种. 2.初始化基类 当创建一个导出类的对象时,该对象包含一个基类的子对象.这个子对象跟直接new一个基类的对象完全相同,唯一的区别是:一个在外部,一个被包装在导出类对象内部. 在导出类构造器中,通过调用基类构造器来执行初始化.[在Java中,所有导出类的所有构造器内部都必须调用父类的某一个构造器或所有导出类的所有构造器内部都必须调用一个其他构造器(既可以是本类构

四(1)、关于复用类

 一.回到前言那一章,关于复用,java中直接提供的两种方式:组合和继承 1.关于组合:类中创建新的类的对象 关于这一点,组合是类似积木的方式,其实相比于继承来说松耦性更好,在了解spring后,会知道spring提出的控制反转,对于这种积木方式又是进一步解耦. 2.关于继承,这是java中的一个特点,同时也是多态的基础 1)注意一个细节 1 public class Test extends Check{ 2 String s ; 3 public static void main(Strin

《JAVA编程思想》学习笔记——第七章 复用类

复用类的主要方式有两种:组合,继承 组合 例: class A {} class B {A a;} 继承 继承是所有OOP语言和Java语言不可缺少的组成部分.当创建一个类时,总是在继承,因此,除非已明确指出要从其它类中继承,否则就是在隐式地从Java的标准根类Object进行继承. 继承适用关键词:extends,继承会自动得到基类中所有的域和方法 super super关键字表示超类的意思,当前类就是从超类继承来的.调用超类方法:super.funcName(); 初始化基类 无参构造器,J

Java4Android之复用类

本节内容是对<Thinking in Java>中第七章 复用类的笔记和总结 1 , 复用现有的代码而不去破坏现有的代码,有两种方法:组合和继承. 2,toString()方法.在类需要转变成String对象的时候,就会调用该函数.例如有个A类的对象a , A a ;然后有语句 "object:"+a;这时候其实是"object:"+a.toString(); 3,惰性初始化.成员的初始化有很多种,我们在之前的学习中知道,如果是基本数据类型没有初始化,则

Java学习笔记—复用类

复用代码是Java众多引人注目的功能之一. 一般而言,实现代码重用java提供了两种方式:组合以及继承. 组合:新的类由现有类的对象所组成.(复用现有代码的功能,而非它的形式) 继承:按照现有类的类型组建新类.(在不改变现有类的基础上,复用现有类的形式并在其中添加新代码). 组合 class Engine{ public void start(){} public void stop(){} } class Door{ public void open(){} public void close

Thinking In Java笔记(第七章 复用类)

第七章 复用类 复用代码是Java众多引人注目的功能之一,但想要成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须能够做更多的事情. Java中所有事物都是围绕着类来展开的.通过创建新类来复用代码,不必重新开头编写.此方法的窍门在于使用类而不破坏现有程序代码.本章中有两种代码重用机制来达到这一目的: 只需要在新的类中生成现有类的对象.由于新的类是由现有类的对象所组成的,这种方法通常成为组合.该方法只是复用了现有程序代码功能,而非形式上和之前的类有相似之处. 第二种方法更加细致

Java编程思想(四) —— 复用类

看了老罗罗升阳的专访,情不自禁地佩服,很年轻,我之前以为和罗永浩一个级别的年龄,也是见过的不是初高中编程的一位大牛之一,专访之后,发现老罗也是一步一个脚印的人.别说什么难做,做不了,你根本就没去尝试,也没有去坚持. If you can't fly then run,if you can't run then walk, if you can't walk then crawl,but whatever you do,you have to keep moving forward--Martin

[THINKING IN JAVA]复用类

7 复用类 7.1 组合 即在一个类中使用另一个类作为成员变量,这是复用了现有程序代码的功能,而非形式. 7.2 继承 关键字:extends,这种复用是形式的复用,是一种可扩展和限制的复用: 复用:自动获取基类的所有public(protected)成员和方法,如果基类的成员和方法没有访问限定词,那么这个基类的无限定词方法和成员能在同一个包中的子类中访问,其它包中不行(包访问权限): 初始化基类:在子类构造器可访问之前先会调用父类的构造器,如果父类还有父类,将继续向上搜寻并调用构造器:如果不显

Java编程思想(七、复用类)

复用代码是Java众多引人注目的功能之一. 复用类有两个方法.第一种:只需在新的类中产生现有类的对象.由于新的类是由现有类的对象所组成,所以这种方法称为组合.第二种:按照现有类的类型来创建新类.无需改变现有类的形式,采用现在类的形式并在其中添加新代码.这种方式称为继承. 1.组合语法.只需将对象引用置于新类中即可.编译器并不会简单地伟每一个引用都创建默认对象.如果想要初始化这些引用,可以在代码中的下列位置进行:1).在定义对象的地方.这意味着它们总是能够在构造器被调用之前被初始化.2).在类的构