• 面向对象的三大特征:封装、继承、多态


    • 什么是类?

      • 类实际上在现实世界是不存在的,是一个抽象的概念。是一个模板。是我们人类大脑进行”总结、思考、抽象“的一个结果。

      • 比如:明星是一个类

    • 什么是对象?

      • 对象是真是存在的个体

      • 比如:刘德华是一个对象、郭富城是 一个对象

    • 在java语言中,要想得到”对象“,必须先定义”类“,”对象“是通过”类“这个模板创造出来的。

      • 类就是一个模板:类中描述的是所有对象的”共同特征信息“,对象就是通过类创建出的个体

    • 类 --- 》{实例化} --- 》对象 (实例)

    • 对象 ---》 {抽象} -- 》类

    • 什么是构造方法,有什么用?

      • 构造方法是一个比较特殊的方法,通过构造方法可以完成对象的创建,以及实例变量的初始化。换句话说:构造方法是用来创建对象的,并且同时给对象的属性赋值。(注意:实例变量没有手动赋值的时候,系统会赋默认值)

      • 当一个类没有提供任何的构造方法,但是系统会默认提供一个无参数的构造方法。(叫做缺省构造器)

      • 使用new运算符类调用构造方法

      • 构造方法名和类名必须一直

      • 构造方法不需要指定返回值类型,也不能写void

      • 构造方法支持方法重载的

    • 什么是封装?

      • 现实世界封装的粒子:手机,电视机,笔记本电脑,这些都是外部一个坚硬的外壳儿。把里面的部件给封装起来,保证内部是安全的。另外封装起来之后,对于我们使用者来说,是看不见里面的复杂结构的,只需要知道是怎么操作,怎么使用的。

    • 封装的两个作用:

      • 保证内部结构的安全

      • 屏蔽复杂,暴露简单

    • 在代码级别,封装有什么用?

      • 一个类体当中的数据,假设封装之后,对于代码的调试人员来说,不需要关系代码的复杂实现,只需要通过一个简单的入口就可以访问了。另外,类体中安全级别较高的数据封装起来,外部人员就不能随意访问,来保证数据的安全。

    • 什么是继承?有什么用?

      • 继承:在现实世界中也是存在的。例如:父亲很有钱,儿子可以继承父亲的产业,也可以有钱

      • 继承的基本作用:子类继承父类,代码可以得到复用。(这个不是重要的作用,是基本作用)

      • 主要(重要作用):因为有了继承关系,才有了后期的方法覆盖和多态机制。

    • 继承的相关特性:

      • B类继承A类,则称A类为超类(superclass)、父类、基类,B类称为子类(subclass)、派生类、扩展类

      • Java中的继承只支持单继承,不支持多继承,c++支持多继承。Java不允许这样的代码:class B extends A,c{}

      • 虽然Java不支持多继承,但是有时会产生间接继承的效果。例如:class C extends B,class B extends A.也就是说C直接继承B,其实C还简介继承了A

      • Java中规定,子类继承父类,除构造方法和被private修饰的数据不能被继承外,剩下的都可以继承。

      • Java中的类没有现实的继承任何类,则默认继承Object类,Object类是Java语言提供的跟类(老祖宗类),

      • 继承也存在一些缺点。耦合度非常高,B类继承A类,A类变化之后马上会影响B类

    • 向上转型概念:子 -- > 父(upcasting) 又被称为自动类型转换:Animal a = new Cat();

    • 向下转型概念:父 -- >子(downcasting) 又被称为强制类型转换:Cat c = (Cat)a: 需要加强制类型转换符

      • 向下转型有风险:容易出现ClassCastException(类型转换异常):规避这个风险用instanceof运算符判断

      • 不管是向上转型还是向下转型,他们之间必须要有继承关系,这样编译器就不会报错

    • 什么是多态

      • 多种形态,多种状态,编译和运行有两个不同的状态

      • 父类型的引用指向子类型对象

      • 编译器叫做静态绑定

      • 运行期叫做动态绑定

      • 例如: Animal a = new Cat()

    • 多态在开发中的作用

      • 降低程序的耦合度,提高程序的扩展力

  • 相关阅读:
    基于Redis手工实现分布式锁
    NFC基础知识
    TypeScript 高级类型-详解
    云安全(1)--初识容器逃逸之特权容器逃逸
    RK3128-android7.1-rtl8723du
    odoo16 Model的操作符重载
    一文读懂在Postgresql数据库中进行窗口函数的操作
    vulnhub Monitoring: 1
    VS和QT联合开发
    云里黑白21——win10开始菜单左键点不出来
  • 原文地址:https://blog.csdn.net/qq_43280993/article/details/126131186