面试突击:面向对象基础

本文已收录于: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;
    }
}

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

继承

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

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

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

多态

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

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

这里要写段代码的例子

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

点关注,不迷路

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

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

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

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

相关推荐
弗拉唐25 分钟前
springBoot,mp,ssm整合案例
java·spring boot·mybatis
oi771 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器
2401_857610031 小时前
SpringBoot社团管理:安全与维护
spring boot·后端·安全
少说多做3431 小时前
Android 不同情况下使用 runOnUiThread
android·java
知兀1 小时前
Java的方法、基本和引用数据类型
java·笔记·黑马程序员
蓝黑20202 小时前
IntelliJ IDEA常用快捷键
java·ide·intellij-idea
Ysjt | 深2 小时前
C++多线程编程入门教程(优质版)
java·开发语言·jvm·c++
凌冰_2 小时前
IDEA2023 SpringBoot整合MyBatis(三)
spring boot·后端·mybatis
码农飞飞2 小时前
深入理解Rust的模式匹配
开发语言·后端·rust·模式匹配·解构·结构体和枚举