一、 构造方法和静态代码块

public class A {  
    static{System.out.print(1);}  
    public A(){System.out.print(2);}  
}  
  
public class B extends A{  
  
    static{System.out.print("a");}  
    public B(){System.out.print("b");}  
}  
  
public class C {  
    public static void main(String\[\] args){  
        A a = new B();  
        a = new B();  
    }  
}
运行结果:1a2b2b
解析:
 A a = new B();
 会调用B的构造方法,默认在B构造方法开头调用super(),
 也就是A();
 A没加载,所以CLassLoader去加载A就会执行A中静态代码块,
 然后执行A();
 然后回到B构造方法继续走,发现B没加载,就会执行静态代码块,
 然后再继续执行B();
 再new一次B的时候,类加载不会再发生;

总结:其实静态代码块利用类加载的一次特性,还是经常能看见
1、父类子类都有构造方法和静态代码块的时候
父类静态代码块>父类构造函数>子类静态代码块>子类构造函数

二、重载和重写

区别:
1、重写是子类在父类已有功能的扩展,是多态特性的体现
2、重载是类内同一个名字的方法
3、形式上的区别

区别点 重载 重写
参数列表 必须修改 必须相同
返回类型 可以修改 必须相同
异常 可以修改 只能抛出父类中定义好的异常
访问权限 可以修改 >=父类
方法名 必须相同 必须相同

重载:参数次序、数量、类型
重写:抛出异常,不能抛出异常,不能父类方法抛出A异常,
子类方法抛出(B extends A)异常,相反也不能

  
class A {  
  static {System.out.print(1);}  
  
  public A() {System.out.print(2);}  
  public int D(int a ) {System.out.print(2);return 1;}  
  protected long D(int a,int b ) throws IllegalAccessException,IndexOutOfBoundsException
  {return 10L;}  
  private float D(){return 0.1F;}  
}  
  
class B extends A {  
  static {System.out.print("a"); }  
  public B() {System.out.print("b");}  
  
  @Override  
  public int D(int a ) {return 1;}  
  @Override  
  protected long D(int a, int b ) throws {return 10L;} 
  
  //这里的异常必须是父类方法定义的异常
  private float D() throws IndexOutOfBoundsException{  
  return 0.1F;}  
  private double D(int a,int k,long b) throws Exception{  
  return 0.1F;}  

}

封装、继承、多态


面向对象

看待问题,解决问题的思维方式,着眼点在于找到一个能够帮助解决问题的实体,然后委托这个实体解决问题

面向过程

着眼点在于问题是怎么一步步被解决的,然后亲力亲为的一步步的解决它


多态

1、多态的定义
允许不同类的对象对同一消息做出响应,
包括编译时多态,运行时多态

2、多态的作用
消除类型之间的耦合关系

3、多态的三个必要条件
继承、重写、父类引用指向子类对象

4、实现多态的技术
动态绑定,调用运行时类的方法

5、好处
1.简化性
简化对具体事物的处理逻辑的拆分
幼儿园化一点,策略模式到匿名内部类再到Lambda表达式

2、可替代性
对已存在代码具有可替换性

3、可扩充性
通过新增子类不影响已存在类的多态性

参考文章
[1] https://segmentfault.com/a/1190000021238707
[2] https://www.shsxt.com/it/java/683.html
[3] https://segmentfault.com/a/1190000012323629
[4] https://segmentfault.com/a/1190000018397324


Winson
6 声望1 粉丝

把原本的个人笔记迁移到这里