2026/5/21 14:35:38
网站建设
项目流程
网站广告调词平台,长沙网站制作教程,微信公众号是什么平台,扬州建设工程招聘信息网站Java SE 面向对象#xff08;OOP#xff09;核心知识点详解 #xff08;从零基础到面试/项目常用级别 2026 年视角 清晰 对比 代码 常见误区#xff09;
Java 是纯面向对象语言#xff08;几乎一切皆对象#xff09;#xff0c;它的面向对象特性比 C 更纯粹、更严…Java SE 面向对象OOP核心知识点详解从零基础到面试/项目常用级别 · 2026 年视角 · 清晰 对比 代码 常见误区Java 是纯面向对象语言几乎一切皆对象它的面向对象特性比 C 更纯粹、更严格。下面按实际掌握顺序和重要程度排列。一、面向对象四大基本特征必须倒背如流特征中文名一句话核心含义Java 中的体现方式面试经典问题封装Encapsulation把数据和操作数据的方法绑定在一起对外隐藏细节private 成员变量 public/getter/setter为什么 getter/setter 比直接 public 好继承Inheritance子类复用父类的属性和方法extends单继承Java 为什么不支持多继承用接口解决什么多态Polymorphism同一个方法调用不同对象有不同表现方法重写 父类引用指向子类对象编译时绑定 vs 运行时绑定抽象Abstraction隐藏具体实现只暴露必要接口abstract 类 / 接口abstract class 和 interface 区别二、类与对象最基础但最容易写错// 类模板 / 蓝图publicclassPerson{// 成员变量属性 / 字段privateStringname;// 封装privateprivateintage;privatestaticintcount;// 类变量static// 构造方法创建对象时调用publicPerson(){// 无参构造默认提供但写了有参就没了this(未知,0);// 调用其他构造}publicPerson(Stringname,intage){this.namename;this.ageage;count;}// 方法行为publicvoideat(){System.out.println(name 在吃饭);}// getter / setter封装的体现publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.namename;}// 静态方法publicstaticintgetCount(){returncount;}}使用Personp1newPerson(张三,25);Personp2newPerson();p1.eat();// 张三 在吃饭System.out.println(Person.getCount());// 2三、this 与 super 的使用场景高频易错关键字代表什么常见用法场景不能用在哪this当前对象本身区分同名变量、调用其他构造、返回自身static 方法里super父类对象父类的引用调用父类构造、调用父类方法/属性static 方法里classStudentextendsPerson{privateStringschool;publicStudent(Stringname,intage,Stringschool){super(name,age);// 必须是第一行this.schoolschool;}Overridepublicvoideat(){super.eat();// 调用父类的 eatSystem.out.println(学生在食堂吃饭);}publicStudentchain(){this.age18;returnthis;// 方法链调用}}四、方法重载Overload vs 方法重写Override维度方法重载Overload方法重写Override发生位置同一个类子类与父类方法名相同相同参数列表不同个数/类型/顺序必须完全相同包括泛型在 JDK 1.5 后返回值类型可以不同但建议一致必须相同或协变返回类型子类更小范围访问修饰符无要求不能更严格public protected 默认 private异常无要求不能抛出更广的 checked 异常注解无需推荐加 Override编译检查五、访问权限修饰符对比最容易混修饰符本类同包子类不同包其他类不同包记住口诀public√√√√全公开protected√√√×包 子类默认无√√××包内可见private√×××只有自己能用六、抽象类 vs 接口2026 年面试最爱问的区别维度abstract classinterfaceJDK 8成员变量可以有普通变量 常量只能有 public static final 常量方法可以有抽象方法 具体方法可以有抽象方法 default 方法 static 方法构造方法可以有不能有继承/实现单继承extends多实现implements访问修饰符可以是任意默认 public适用场景有部分相同实现想强制子类实现某些方法完全定义规范 / 行为契约多实现场景JDK 8 接口新特性必须知道default 方法提供默认实现解决接口演进问题static 方法工具方法private 方法JDK 9接口内部复用逻辑interfaceFlyable{intMAX_SPEED1000;// public static finalvoidfly();// 抽象方法defaultvoidland(){// 默认方法System.out.println(慢慢降落...);}staticvoidrepair(){// 静态方法System.out.println(飞机维修中);}}七、final 关键字在面向对象中的三种用法final 变量常量基本类型值不可改引用类型地址不可改final 方法不能被子类重写final 类不能被继承String、Integer、LocalDateTime 等八、面向对象设计原则SOLID速记中高级必备Single Responsibility Principle → 单一职责Open-Closed Principle → 对扩展开放对修改关闭Liskov Substitution Principle → 里氏替换原则子类可替换父类Interface Segregation Principle → 接口隔离Dependency Inversion Principle → 依赖倒置面向接口编程九、常见误区 面试追问static 方法能被 override 吗 → 不能只能被 hide隐藏子类构造方法第一行不写 super() 会怎样 → 编译器自动调用父类无参构造没有就报错private 方法能被继承吗 → 不能被继承但子类可以定义同名方法不是重写接口可以有构造方法吗 → 不能为什么 Java 不支持多继承 → 菱形问题用接口 default 方法解决你现在最想深入的面向对象部分是哪一块构造方法 / this / super 的各种细节多态的实现原理虚方法表抽象类 vs 接口的真实项目选型final / static / this 的组合使用还是想看一个完整的面向对象小项目示例直接告诉我我继续给你针对性内容