口诀: 同名同参同返回叫覆盖;同名异参叫重载。(参:参数的顺序、数据类型和个数) 覆盖异常非必须,但是范围只能小;覆盖方法时,范围(权限)只能大。
1. 构造方法的调用 构造方法调用时,必须连同关键字new一起调用。 构造方法是每个类必须的。一个类至少有一个无参构造,如果不显式编写构造方法,则java编译器会默认为类生成一个无参构造。 构造方法不能是static的,也不能被继承(默认分情况,私有静态构造不继承)。当然也就不能被覆盖。 构造方法可以被重载,也可以存在各种访问控制符。
1. final的含义 final是种修饰符,用来修饰类、成员变量、成员方法、局部变量等。 abstract修饰的类即抽象类,不能使用final关键字修饰;因为抽象类必须被子类继承以覆盖其中的抽象方法—-而final修饰的类为最终类,不允许有子类。 abstract修饰的方法即抽象方法,不能使用final关键字修饰,因为抽象方法必须被子类去覆盖—-而final修饰的方法为最终方法,不允许被覆盖。
1. static的含义 口诀:static在天边,实现数据共享
1. 四种访问权限修饰符 1.1 类关系 自身 : 指的是当前类自己。 同包子类 : 子类 , 并且处于同一个包下。 同包其他类 : 没有继承关系 , 但是处于同一个包下。 不同包子类 : 子类 , 但是在另一个包下。 不同包其他类 : 没有继承关系 , 并且在另一个包下。
1. 继承 默认分情况,私有静态构造不继承。 注意: 父类中除了构造方法、私有成员、静态成员不能被子类继承,其他的任何东西都能够被子类继承。 private成员尽管能被继承,但是不能被访问,因为它的访问权限是private的。能访问就能覆盖。因此private方法不能被覆盖。因为编译器隐式的将private方法修饰为final的了。 default权限的成员可以被继承,但是能不能访问要分情况:如果子类和父类在同一包则子类可以访问,如果不在同一个包则子类不能访问。能访问就能覆盖。对于不同包的父类,编译器隐式的为default方法添加了final修饰;而同包的则没有添加。 父类的static成员可以被子类继承,static成员是随着类的加载而最早被JVM加载到方法区内存的静态区的,属于类的静态加载而不随着实例对象去加载,因此static成员不是实例成员,所以不允许覆盖。 # 2. 单继承 口诀:一个孩子不能有多个亲生父亲 子类继承父类在Java中只能是单继承而不能是多重继承;单继承即一个子类只能继承一个父类,而不能继承多个父类。 但是Java中一个类可以实现多层继承,即C继承B、B再继承A。 # 3. 多继承 与单继承相对,即一个子类可以同时继承多个父类。 Java中,子类实现接口时,可以实现多个接口; 接口继承接口时,也可以继承多个接口。 4. 继承关系 口诀: 类与类、接口与接口是继承;类与接口是实现。 继承的关键字是extends;实现的关键字是implements。 (1) 类与类之间是继承关系,接口与接口之间是继承关系;用关键字extends去继承; (2) 普通类继承抽象类,必须覆盖抽象类中所有的抽象方法。 对于类与类之间,类与接口之间,接口与接口之间的继承关系如下: (1) 普通类可以继承普通类; (2) 普通类可以继承抽象类; (3) 抽象类可以继承普通类; (4) 抽象类可以继承抽象类; (5) 普通类可以实现接口; (6) 抽象类可以实现接口; (7) 接口可以继承多个接口。 参考:java继承原理 5. 深入父子类继承 口诀:实例化子类对象之前,如果子类对象存在直接父类,则先实例化父类对象;如果父类继续存在父类,则优先实例化父类的父类对象。以此类推。 约束:对于父类是接口的,则不会实例化父类对象。 继承关系中,对于方法而言,子类可以覆盖父类中的相同方法。 继承关系中,对于父类的成员变量,子类是不能覆盖的,如果子类定义了和父类中完全相同的成员变量,那么此时子类将存在两份相同的变量,一份是继承自父类的(私有和静态的肯定不被继承),一份是子类自己的。 成员变量没有覆盖一说,成员变量的继承也遵循“默认分情况、私有静态不覆盖、构造方法不继承”的原则,子类若能继承父类的成员变量,并且自身也有相同的变量,那么子类将会存在两个完全相同的两份变量,其中继承自父类的变量存储在父类的堆内存中,自己的成员变量存储在自己的堆内存中。 子类中完全相同的两份变量,具体调用的是子类自己的还是继承自父类的,只需要关注调用的对象是子类的引用还是父类的引用。 抽象类不能直接被实例化,但抽象类完全具备构造方法,意味着抽象类在作为父类时,是能够被JVM自动实例化的。
1. 抽象类 同样由class关键字定义,但是必须由abstract关键字修饰的类叫做抽象类;(抽象类是特殊的类)。
1. 类 类中定义了属性和方法,即对某个事物的静态描述和动态描述(也叫做成员变量、成员方法或者静态属性、动态特征),是概念化的规范,是对对象实体的抽象化定义。
1. java中变量初始化为默认值的时机 口诀: 成员变量自动初始化,方法变量手动初始化! 成员变量堆内存/方法区,方法变量栈内存/方法区!
1. java 中的数据类型 java是种强类型高级开发语言,java中的每一个变量或者常量都必须明确指定对应的数据类型。 所谓数据类型,即表示对应的变量或者常量在内存中将按照什么方式进行存储、将占用多少内存空间等。
个人独立开发项目,基于springboot 3.x starter机制提供插拔式的插件功能
基于芋道最新源码二次开发