静态代码块and实例代码块and继承(理论)

171 阅读3分钟
//静态代码块and实例代码块
package com;

public class Test {
    //静态代码块 属于类 与类一起有限加载只存储一份
    //作用:可以在程序启动时,进行静态资源初始化
    static {

    }
    //实例代码块 属于对象 每次调用构造器 构建对象都会执行一次 在执行构造器 
    // 如果存在继承关系,会先调用父类构造器,在执行实例代码块
    //作用:可以初始化实例资源(不咋常用)
    {

    }
    public static void main(String[] args) {


    }
}
//继承
什么是继承?:java允许一个类使用extends与另一个类建立父子关系 这就是继承
继承的格式?:子类extends父类
继承概述:子类继承父类就可以得到父类的属性和行为
继承的优点:提高代码的复用性,多个子类相同的代码可以放到父类里增强了类的扩展
继承的设计规范:子类共有属性和行为放在父类,子类独有的行为和属性放在子类里
内存原理:

![微信图片_20220707133152.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2bd5d6ddd0d847319af6ba415f028074~tplv-k3u1fbpfcp-watermark.image?)

继承特点:子类可以继承父类的属性和行为,但是不能继承父类的构造器
          java是单继承模式:一个子类只能继承一个直接父类
          java不支持多继承,但是可以多层继承
          Java所有类都是Object的子类 万物皆对象
          个人认为 Java可以继承父类的私有成员只是不能直接访问
          子类可以继承父类的静态成员吗? 共享不等于继承
          
 继承后的成员方法和成员变量的访问特点:就近原则    this.子类自己的成员变量/方法
 在子类的方法中访问父类的的成员要用 super.父类的成员变量或方法
 
 继承后重写父类方法:可以理解为,为父类的方法锦上添花 重写建议使用@Override注解
 @Override 可读性好,可以检测是否正确重写
 
 重写规则:子类重写的方法名称和形参列表要与父类被重写的方法名称和形参列表一致(重点)
           父类的私有方法不能重写
           父类的静态方法不能重写
               重写方法的权限要大于被重写方法的权限  private<缺省<protected<public
               
继承后子类构造器的特点:子类的全部构造器会默认先访问父类的无参数构造器在执行自己的数据
why:因为现有爸爸才有儿子,需要先访问父类的构造器初始化父类的数据,在调用自己的构造器初始化自己
代码层面:默认子类构造器第一行都有一个super()访问父类的无参数构造器写不写都有

继承后子类构造器访问父类有参构造器:调用父类有参构造器初始化父类数据
super(....)根据参数访问父类构造器


this访问子类当前对象的成员
super:在子类方法中指定访问父类的成员
this(....)访问本类兄弟构造器
super(.....)在本类构造器中指定访问父类的构造器

注意事项:super(....)必须放在第一行,this(.....)也必须放在第一行,因此二者不能共存一个构造器