字符串有常量区域,如果字符串内容一样,那么就直接将常量区域给另一个对象。
只给引用不给对象,那么就会赋初值null。
在构造方法中产生对象,组合的属性不能是static。
类的加载只加载静态成员初始化,产生对象后才加载属性。
编译不加载类,只有运行的时候才加载类
一对花括号表示代码块,不是方法也不是属性,他的级别是属性,他就是对象初始化的时候被执行。以后就没法访问代码块了。
打印对象是调用对象的tostring()方法。
继承初始化:
- 一找到类,做类的加载就先父类初始化,再去初始化子类。
- 父类以后做属性初始化,然后再构造方法。搞完再去搞子类,这时候就产生对象了。
如果子类改写了,那么会调用子类的重写方法
可以调用main方法。
Java默认找父类的无参构造方法。如果要调有参构造方法,那么就super(参数);
super必须放第一行,就很this方法一样,必须放第一行。
构造方法才是super放第一行
清除的时候是先搞子类,super放后面。
例如:子类是继承了父类A中:public a前面的一行写@Override
重载:一个类里面方法名一样
重写:子类和父类的方法重写
Protected方法可以被继承
写出来的方法是被人用的,那么就把方法写成public方法。子类继承父类的public 方法
静态方法可以用类名.方法名来访问
转型的地方:1.定义对象引用的时候就直接把子类对象给父类的引用
2.用父类的方法,但是参数传子类的
- Final使对象引用恒定不变,即变量一直指向那个对象,不再指向别的对象,但是那个对象的值可以改变
没有直接final后赋初值,那就在构造方法中初始化。
就跟组合关系中可以在构造方法中初始化也可以直接在属性中初始化。
Private方法就是final方法,因为后续继承的不能改写private方法
语法上子类是不继承private方法,但是会继承final方法,但是不能改写final方法
Final 类:
意味方法都变成final方法,但是属性的话不是final,因为访问这个类都是访问方法这个接口。
初始化和加载:
子类初始化先初始化父类!
只定义了一个对象的引用,那么这个类不加载。
先加载父类再加载子类
对象:先super搞父类的对象,然后再搞子类