《java编程思想》P140-P160(第七章复部+第八章部分)

来源:互联网 发布:豚丫丫这款软件好吗 编辑:程序博客网 时间:2024/06/09 17:30

1.不用修饰符 修饰的方法或类,它们的修饰符是 默认修饰符即 包访问权限(包内都可以用)(临时记的)

2.

final数据:

对于基本类型,final使数值恒定不变,而对于对象引用,final使引用恒定不变(java里数组也是对象引用)。一旦引用被初始化指向一个对象,就无法再把它指向另一个对象。然而,对象本身还是可以改变的!(只是不能再指向别的,但这个对象本身还是可以变化的)

Java允许生成”空白final”,所谓空白final是指被声明为final但是没有赋初值的域.无论什么情况,java编译器都保证空白final在使用前必须被初始化”. (必须在定义处或构造器里).

final方法:

为了防止继承类修改这个方法的定义(final方法无法被重写/覆盖

类中所有的private方法都隐式的指定为final的. 

覆盖只有在某个方法是基类的接口的一部分才出现,如果某个方法是private的,就不是接口的一部分,就不能被覆盖/重写,子类再写个一样的不能称为覆盖/重写,只是个子类的新方法(相同名称而已)。其实,子类不知道基类的某些方法(private),那么覆盖就无从谈起. 

final类:final类无法被继承 .

3.初始化的顺序(得靠刷题)

    1. 父类--静态变量
    2. 父类--静态初始化块
    3. 子类--静态变量
    4. 子类--静态初始化块
    5. 父类--变量
    6. 父类--初始化块
    7. 父类--构造器
    8. 子类--变量
    9. 子类--初始化块
    10. 子类--构造器

4.多态的作用是消除类型之间的耦合关系 

5.动态(也称动态绑定、后期绑定、运行时绑定)

6.java中除了static方法和final方法(private属于final方法)之外,其它方法都是后期绑定

7.java中的方法都是通过动态绑定实现的多态

8.构造器中发生了多态,如果子类覆盖了父类方法,且父类构造器中调用了该方法,会发生多态现象,最终调用子类的该方法.但是此时子类的初始化还没进行,可能导致意想不到的结果.所以尽量不要在构造器中调用其他方法,或者仅仅调用final以及private(private默认final)的方法;如下代码输出BB

public class test {class A{public A(){print();}void print(){System.out.println("A");}}public class B extends A{public B(){print();}void print(){System.out.println("B");}}public static void main(String[] args) {test t = new test();A a = t.new B();}}

原创粉丝点击