博主总结
-
面向对象理解(直接背,里面的问题总结接着后面部分就有)
- 首先,面向对象编程是一种编程范式。
- 其次,面向对象主要思想就是将要解决问题所需要的每一部分流程封装为对象,然后通过对象与对象之间进行交互来解决问题。
- 此外,面向对象主要的特性我总结了有四个分别是抽象、封装、继承、多态,我观察它们之间是有一个逻辑层次性在里面,首先先是将一类对象的公共特征抽象成一个模板类,模板类里面含有公共属性和公共方法,其中并不关注具体细节主要是为了复用代码。然后通过将数据和抽象类结合封装对象来实现其中的具体细节,从外界来看对象是一个完整的个体,其通过定义公共接口即get()、set()方法来访问和操作对象的数据。再然后通过继承来实现对父类的方法的复用和扩展父类的属性和方法,进而来进行一个增强嘛。最后还有多态,多态的话分为编译时多态即重载方法和运行时多态具体表现来看主要是在继承的基础上重写方法。
- 说到这儿,由于多态就会出现到底是谁生成实现的问题,所以多态还有一个“编译看左边,运行看右边”的特点,主要就是对于非静态方法来说的。对于其他的成员都是编译运行都看左边。
- 另外刚才抽象那里还提到了抽象类,它和接口的区别就是,抽象类是单继承的,包含成员变量以及抽象方法和普通方法,但普通方法必须有实现,抽象方法只能在子类中实现,抽象方法不能用private修饰,主要是为了复用代码。接口的话是多实现的,只包含方法及常量,默认抽象方法是public修饰,主要是为了定义规范。
- 再说封装那里提到了对象的创建,创建对象有四种方式,分别可以通过new关键字实现、反射、克隆、以及序列化实现,里面涉及new子类对象时静态变量和构造方法的执行顺序问题、反射原理、以及深克隆浅克隆问题。(这几个问题博主都有文章解释,可进入主页看相关文章,也可到最后直接背我的《博主总结部分》。)
-
另外还涉及到上述设计对象以及方法时候的一些访问修饰符以及一些关键字比如this、super、static、final关键字。
- 好的面试官,这大概就是我对面向对象的理解。
-
new创建子类对象时静态方法和构造方法的执行顺序?(关于类加载器)注:看主页文章直接食用。
-
反射(是什么?怎么用?慢的原因?)注:看主页文章直接食用。
-
深克隆与浅克隆区别。注:看主页文章直接食用。
-
this、static、final关键字作用
-
①this
- 区分成员变量和局部变量:当成员变量和局部变量同名时,可以使用 this 来明确引用成员变量。
- 在构造方法中调用其他构造方法:在一个构造方法中可以使用 this() 来调用同一个类的另一个构造方法。
-
②static
- 静态变量:用于本类的全局状态或共享数据,如计数器、配置参数等。
- 静态方法:用于工具方法或与实例状态无关的操作,比如数学计算、字符串处理等;
- 静态代码块:用于类的初始化,如初始化静态变量、加载配置文件、建立数据库连接等;
- 静态内部类:适合用于工具类或辅助类,避免创建外部类的实例。
-
③final
- 当 final 修饰一个类时,表明这个类不能被继承。比如,String 类、Integer 类和其他包装类都是用 final 修饰的。
- 当 final 修饰一个方法时,表明这个方法不能被重写(Override)。
- 当 final 修饰一个变量时,表明这个变量的值一旦被初始化就不能被修改。
-
-
访问修饰符public、protected、默认、private区别
- public : 全部可访问
- protected : 有关联的都可以访问
- 默认:本包中
- private : 本类中