《java编程思想》笔记

第七章 复用类

第七章复用类一共分为九部分,大纲如下图所示。我这里主要对一些特别注意的地方进行记录。
《java编程思想》笔记_第1张图片

1、组合语法

这部分主要注意俩点:
1、toString方法
2、初始化的四种方式:
(1) 定义对象的地方–在构造器之前被初始化
(2) 构造器中初始化
(3) 使用之前初始化
(4) 使用实例初始化

2、继承语法

这部分同样也注意俩点:
1、super关键字—表示超类
2、超类的构造器初始化一定在当前类的构造器之前

3、代理

java并不直接支持代理,是通过继承和组合之间的中庸之道实现的。
例如:

class A{
  private B b = new B();
  public void up(){
     b.up();
  }
}

首先在A类中声明并实例初始化B类,之后再声明一个同B类中相同的up方法,再在方法中调用b.up()

个人理解A是B的代理类,具有和B相同的up方法,但B又没有完全暴露给A所有方法。

4、final关键字

这部分主要是去理解final关键字的本质。

4-1 final关键字

final的本质是不可以改变储存在堆栈中的引用,如基本类型用final修饰后,恒定不变,但final修饰对象的话,只是对象的引用不变,无法再把它指向另外一个对象,但其指向的堆中的数据是可以改变的。

4-2 final方法

final方法不能被重写

4-3 final类

final类不能被继承,类中所有的方法都是隐式的final方法

九、初始化及类的加载

这部分主要是讲了static关键字修饰的对象或者代码块在程序加载过程中的执行顺序。初始化顺序为:static静态对象或由static修饰的代码块>普通全局变量>构造器
以下是示例代码:

package InitializationOrder;

public class A {
    private static Integer id = printInit();
    private B b = new B();
    public A(){
        System.out.println("这是A的构造器");
    }
    public static int printInit(){
        System.out.println("static方法");
        return 4;
    }

    public static void main(String[] args) {
        System.out.println("main方法开始执行");
        A a = new A();
        //初始化顺序为(1)static静态对象或由static修饰的代码块(2)全局变量(3)构造器
        //
    }
    static {
        System.out.println("这是A的静态块");
    }

}

package InitializationOrder;

public class B {

    public B(){
        System.out.println("B构造器执行!");
    }
}

程序运行结果:
static方法
这是A的静态块
main方法开始执行
B构造器执行!
这是A的构造器

你可能感兴趣的:(java,Java编程思想,复用类,Java初始化顺序,final关键字)