多态

子类构造的执行顺序
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;
 }
}

原文地址:https://www.cnblogs.com/fkx1/p/8537375.html