- 关于static的说法
- 一个类中可以没有静态变量
- 一个类中可以定义多个静态变量
- 静态的加载优先于对象,随着类的加载而加载
- 被static修饰的变量属于类,这个类的所有对象都可以使用
- 关于继承的描述
- 子类会继承父类的所有非私有成员,包括构造器、方法和属性
- Java中继承是单继承,一个类只能有一个直接的父类
- 如果子类和父类有重名的成员变量或者成员方法,这时访问父类需要用super
- 关于方法重写的描述
- 要有子类继承或实现
- 子类方法的权限必须大于等于父类的权限
- 子类重写父类的方法, 重写的方法名和形参列表必须与父类一致
- 关于static的深入探讨
- 静态修饰的成员变量和成员方法随着类的加载而加载
- 静态修饰的成员方法只能访问静态成员变量,非静态成员变量属于对象实例的,而静态方法不依赖于对象的实例化
- 静态修饰的成员变量和成员方法随着类的消失而消失
- 关于类加载的执行顺序
- 关于类的加载
执行结果如下:
Static-A执行了
构造方法-C执行了
Static-B执行了
代码块-A执行了
构造方法-A执行了
代码块-B执行了
构造方法B执行了
我来解释一下:
1.开始main方法,执行语句new B(),发现B是继承A的,所以会先去加载A,
我们知道static会在类加载的时候执行,所以先执行A的static:Static-A执行了
2.然后继续加载B,执行B的static,static C c = new C( );
这时候会去new一个C,所以执行C的构造方法:构造方法-C执行了
3.然后继续执行B的static:Static-B执行了
4.做完上面这些步骤,意味着B和A的类都加载完了,紧接着B要继续往下走,执行代码块和B的构造方法,
但是由于B是继承A的,所以要先执行父类的代码块和构造方法:代码块-A执行了,构造方法-A执行了
5.最后再加载本身的代码块和构造方法:代码块-B执行了,构造方法B执行了
- 关于继承的深入
- 当一个子类继承一个父类,那么在执行子类构造方法的时候,会先调用父类的无参构造方法
- 关于变量及其范围的陈述
- 成员变量在创建时会被初始化为0(整型)
- 实例变量不能用static声明
- 静态变量使用前,不一定要赋值,会默认初始化为0(整型)
- 静态变量在类加载时被初始化
- 单例模式的实现条件
- 必须在类中创建该类的私有对象
- 类中的构造器的访问权限必须设置为私有的
- 在类中提供一个公有的静态方法用于创建或者获取私有对象
- 单例设计模式是什么意思?什么是懒汉式?什么是饿汉式?
- 单例设计模式是一种设计模式,保证一个类在整个应用程序生命周期中只有一个实例被创建。
- 懒汉式是一种延迟加载的单例模式,即在第一次使用时才创建实例。饿汉式是在类加载时就创建实例。
- 代码块有几种?分别有何特点和作用?
- 实例初始化块:在类中定义,用花括号括起来,没有任何关键字修饰,会在每次创建对象时执行。
- 静态初始化块:使用 static 修饰,会在类第一次加载时执行,用于初始化静态变量或执行一些只需执行一次的操作。
- 继承是什么?为什么要在程序中使用继承?
- 继承是面向对象编程中的一个重要概念,它允许一个类(子类)继承另一个类(父类)的属性和行为。通过继承,子类可以复用父类的代码,并且可以扩展或修改父类的功能。
- 方法重写和方法重载是什么样的?
- 方法重写(Override)是指子类重新定义了父类中已有的方法,但方法的签名(方法名、参数列表)必须保持一致。
- 方法重载(Overload)是在同一个类中定义多个方法,它们具有相同的名字但参数列表不同。