子类构造的执行顺序
1.先从main------》子类构造,不进入构造体
2.子类构造-------》父类构造,进入父类构造体,并执行(成员变量赋值)
3.创建父类对象
4.执行子类构造体
5再回到main,创建子类对象
2.面试题:
快捷键:Ctrl+o:查看当前类型的成员变量和方法的列表
int类型的包装类Integer。 赋值null :肯定的可以 有自己的方法 吗 (有,而且不止一个) 去看过sun公司 对Integer定义吗?
(final修饰的class,没有子类,,我们不能通过SubInteger extends Integer)
通过上述扩展,可以所有的对基本类型的包装类型,都是引用类型
对比是不是用一个对象的时候 用 ==
对比对象中值的时候 用的equals
Integer num=100;
如果你=给的值的范围-128到127之前,他会从缓存中拿。并且自动调度的时候ValueOf
public static Integer valueOf(200) {
if (i >= IntegerCache.low(-128) && i <= IntegerCache.high(127)){
return IntegerCache.cache[i + (-IntegerCache.low)];
}
return new Integer(i);
}
Integer num=new Integer(100);
== 对象的内存地址
equals 对象中的值
1.方法重载也是多态的一种体现
2.人的不同肤色不是多态。
3.多态的终极目标:为了实现统一调用。
4.多态之前的两种实现方式?
多态一:
父类普通类 方法a()
子类普通继承父类 方法a()
多态二:
父类是抽象类 方法是抽象方法a()
子类普通类实现 抽象类 重写了抽象方法a()
5. obj instanceof Type 用来判断一个对象是否属于一个类或者实现一个接口
6.简单工厂 通过工厂类 创建子类对象 保存父类的类型中。
需求:我准备一个动物工厂(AnimalFactory),然后他可以生产出各种动物
简单工厂
工厂模式
抽象工厂
7.单例模式
懒汉
public class Teacher {
//保证内存中只能有一个Teacher对象
//1.保证构造私有
private Teacher(){
}
//2. 准备一个静态变量 ,存储唯一的对象
private static Teacher teacher=null;
//3.对外的公有的 静态方法 ,外界创建对象 都得通过我
public static Teacher getInstance(){
if(teacher==null){
teacher=new Teacher();
}
return teacher;
}
}
恶汉
public class Teacher {
//保证内存中只能有一个Teacher对象
//1.保证构造私有
private Teacher(){
}
//2. 准备一个静态变量 ,存储唯一的对象
private static Teacher teacher=new Teacher();
//3.对外的公有的 静态方法 ,外界创建对象 都得通过我
public static Teacher getInstance(){
return teacher;
}
}