面试突击:面向对象基础

本文已收录于:https://github.com/danmuking/all-in-one(持续更新)

面向对象三大特征

封装

封装是指把一个对象的状态信息(也就是属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息 . 但是可以提供一些可以被外界访问的方法来操作属性. 就好像我们看不见电视内部的零件细节(属性),但是可以通过遥控器来控制电视机(方法). 如果属性不想被外界访问,我们大可不必提供方法给外界访问. 但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了. 就好像如果没有遥控器,那么我们就无法操作电视机,电视就变成了一块废铁.

下面给出了一个简单的代码示例:

java 复制代码
public class People {
    private int age;//id属性私有化
    private String name;//name属性私有化

    //获取age的方法
    public int getAge() {
        return age;
    }

    //设置age的方法
    public void setAge(int id) {
        this.age = age;
    }

    //获取name的方法
    public String getName() {
        return name;
    }

    //设置name的方法
    public void setName(String name) {
        this.name = name;
    }
}

在上面的代码中,age和name就是对象的属性并且被private修饰, 这意味这这些属性无法被外部直接访问. 但是可以通过类提供的方法, 例如getxxx()和setxxx()方法来间接访问对应的属性.

继承

即使是不同类型的对象, 它们相互之间也经常有一定的共同点. 例如, 小明同学、小红同学、小李同学, 都具有学生的特性(班级、学号等). 同时, 不过不同的对象也可能具有自己独立的特性. 例如小明是一个高中生, 小红有画画的技能等等. **继承是使用已存在的类的定义为基础来构建新类的技术, 新类的定义可以增加新的数据或新的功能, **也可以用父类的功能, 但不能选择性地继承父类. 通过使用继承, 可以快速地创建新的类, 可以提高代码的重用, 程序的可维护性, 节省大量创建新类的时间, 提高我们的开发效率.
关于继承如下 3 点请记住:

  1. 子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有.
  2. 子类可以拥有自己属性和方法,即子类可以对父类进行扩展.
  3. 子类可以用自己的方式实现父类的方法.

继承一般代表一种is-a的所属关系, 父类和子类之间通常被认为具有强关联, 因此在使用继承是需要慎重.

多态

多态, 顾名思义, 表示一个对象具有多种的状态,具体表现为**父类的引用可以指向不同子类的实例. **
多态的特点:

  • 对象类型和引用类型之间具有继承(类)/实现(接口)的关系;
  • 引用类型变量发出的方法调用的到底是哪个类中的方法, 必须在程序运行期间才能确定;
  • 多态不能调用"只在子类存在但在父类不存在"的方法;
  • 如果子类重写了父类的方法, 真正执行的是子类覆盖的方法, 如果子类没有覆盖父类的方法, 执行的是父类的方法.

这里要写段代码的例子

在 Java 中, 多态的实现通常会涉及到接口和继承, 然而这两种不同的实现方式分别有不同的特点, 细节部分可以看看这里面相对象面试题详解, 大家在面试中如果说到面相对象的特征可以结合上这道题进行一定的拓展.

点关注,不迷路

好了,以上就是这篇文章的全部内容了,如果你能看到这里,非常感谢你的支持!

如果你觉得这篇文章写的还不错, 求点赞 👍 求关注 ❤️ 求分享 👥 对暖男我来说真的 非常有用!!!

白嫖不好,创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

如果本篇博客有任何错误,请批评指教,不胜感激 !
最后推荐我的IM项目DiTing (https://github.com/danmuking/DiTing-Go),致力于成为一个初学者友好、易于上手的 IM 解决方案,希望能给你的学习、面试带来一点帮助,如果人才你喜欢,给个Star⭐叭!

相关推荐
_Evan_Yao12 小时前
Redis 缓存穿透、击穿、雪崩,一次讲清!
java·spring·mybatis
梓豪csd13 小时前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
秋饼13 小时前
Spring AI 2.1 Message Parts 深度实战:推理签名回放与跨轮记忆持久化的源码级落地
java·ai·技术分享·后端开发
王中阳Go13 小时前
两个入口答案不一致先别调模型:6 行入口口径对账表(附脚本)
人工智能·后端·python·大语言模型·1024程序员节
考研保研资料分享13 小时前
中国人民大学英语笔译保研面经:五校考核、视译口译与择校复盘
面试
thefool11226614 小时前
TCP 1
java·1024程序员节
码事漫谈14 小时前
消除AI幻觉,普通人能做的五件事
后端
古希腊掌管代码的神THU16 小时前
为什么DPO中chosen/rejected概率同时下降?
人工智能·深度学习·机器学习·自然语言处理·面试
金銀銅鐵16 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
AI人工智能+电脑小能手16 小时前
一次请求打几个下游,这个Java并行任务工具类6个方法按序聚合
java·线程池·并发编程·1024程序员节·批量处理·并行任务