09 Java面向对象三大特征(概述)

简介: 09 Java面向对象三大特征(概述)

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

本篇为概念概述板块

详细知识框架梳理和实例明天更

9.1 引言

面向对象三大特性:封装、继承、多态。

9.2 封装
9.2.1 封装的必要性
  • 在对象的外部,为对象的属性赋值,可能存在非法数据的录入。
  • 就目前的技术而言,并没有办法对属性的赋值加以控制。
9.2.2 什么是封装

概念:尽可能隐藏对象的内部实现细节,控制对象的修改及访问的权限。

访问修饰符:private (可将属性修饰为私有,仅本类可见)

9.2.3 公共访问方法

以访问方法的形式,进而完成赋值与取值操作。

问题:依旧没有解决到非法数据录入!

  • 提供公共访问方法,以保证数据的正常录入。
  • 命名规范:
  • 赋值:setXXX() //使用方法参数实现赋值
  • 取值:getXXX() //使用方法返回值实现取值
9.2.4 过滤有效数据

在公共的访问方法内部,添加逻辑判断,进而过滤掉非法数据,以保证数据安全

9.2.5 JavaBean 设计

类:实体类 JavaBean。

JavaBean 分为两种:1、数据承载Bean 2、业务逻辑Bean

数据承载Bean的要求

  • 1、私有化属性
  • 2、对外提供公共的set、get方法
  • 3、提供有参无参构造
9.3 继承
9.3.1 生活中的继承
  • 生活中的“继承”是施方的一种赠与,受方的一种获得。
  • 将一方所拥有的东西给予另一方。
9.3.2 程序中的继承
  • 程序中的继承,是类与类之间特征和行为的一种赠与或获得。
  • 两个类之间的继承关系,必须满足“is a”的关系。
9.3.3 父类的选择
  • 现实生活中,很多类别之间都存在着继承关系,都满足“is a”的关系。
  • 狗是一种动物、狗是一种生物、狗是一种物质。
  • 多个类别都可作为“狗”的父类,需要从中选择出最适合的父类。
  • 功能越精细,重合点越多,越接近直接父类。
  • 功能越粗略,重合点越少,越接近Object类。(万物皆对象的概念)
9.3.4 父类的抽象

实战:可根据程序需要使用到的多个具体类,进行共性抽取,进而定义父类。

在一组相同或类似的类中,抽取出共性的特征和行为,定义在父类中,实现重用。

9.3.5 继承

继承概念:类与类之间属性和方法的赠与和获得

继承作用:减少代码的冗余,提高代码的复用性。

继承语法:子类 extends 父类

9.3.6 继承的特点
  • 1、子类继承父类,可以继承父类中的属性和方法
  • 2、子类可以拥有自己独有的属性和方法
  • 3、单继承,即在java中一个子类只能继承一个父类。但是一个父类可以拥有多个子类

4、多重继承,即一个父类还可以继承另外一个类。java中最大的父类的是Object(如果一个没有显示的写出extends 父类,默认就是Object子类)

9.3.7 不可继承
  • 1、构造方法不能被继承
  • 2、父类的私有属性不能被继承
  • 3、父类中使用默认的修饰符的修饰的属性和方法在不同包的子类中不能被继承
9.4 访问修饰符
9.4.1 访问修饰符

private私有的 default缺省的、默认的、友好的 protected 受保护的 public 公开的

修饰符 本类 本包(不同类) 不同包子类 其他
private
默认的
protected
public
9.5 方法重写
9.5.1 方法的重写/覆盖

子类中有与父类相同签名的方法称之为方法重写

重写的特点:

  • 相同签名 :方法名相同、参数相同、返回值相同、子类访问修饰符要比父类更宽泛
  • 相同签名 :方法名相同、参数相同、返回值相同、子类访问修饰符要比父类更宽泛

重写的作用:

  • 因为父类的方法无法满足子类的需求,所以需要重写父类的方法

注解:@Override 建议在重写方法的时候,加上注解

  • 检测是否是满足方法重写。必须满足重写的要求,否则报错

注意:不能被继承的方法就不能被重写

9.6 super关键字
9.6.1 super关键字

含义:直接父类的对象

作用:可以调用父类的属性、方法、构造方法

调用父类属性和方法的时候:

  • 1、当子类与父类有重名属性和重名方法的时候,this.属性、this.方法名表示调用子类的属性和方法
  • 2、当子类与父类有重名属性和重名方法的时候,super.属性、super.方法名表示调用父类的属性和方法
  • 3、如果没有重名属性和方法,那么this和super表示的都是父类的属性和方法(子类继承而来)
  • 调用父类的构造方法的时候:
  • 注意:创建子类对象之前,必须要先创建父类的对象
  • 1、super();调用的是父类的无参构造。是可以完全省略的,省不省略都会执行(建议:保留父类的无参构造)
  • 2、 super调用父类的有参构造,要放到构造方法第一行。super和this不能同时出现

9.6.2 子类对象的创建过程

对象的创建过程:


1、开辟空间

2、实例化成员变量

3、执行构造方法

4、将创建的对象赋给对象名

继承后对象的创建过程


先创建其父类的对象,实例化父类的成员变量,执行父类的构造方法,

在创建子类的对象 ,实例化子类的成员变量,执行子类的构造方法

9.7 多态
9.7.1 生活中的人物视角

生活中,不同人物角色看待同一个对象的视角不同,关注点也不相同。

9.7.2 生活中的多态

生活中的多态是指“客观事物在人脑中的主观反应”。

主观意识上的类别与客观存在的对象具有“is a”关系时,即形成多态。

9.7.3 程序中的多态

概念:父类引用指向子类对象,从而产生多种形态。

二者具有直接或间接的继承关系时,父类引用可指向子类对象,即形成多态。

父类引用仅可调用父类所声明的属性和方法,不可调用子类独有的属性和方法。

9.7.4 多态的特点
  • a、如果发生多态,那么调用的一定是子类重写的方法。
  • b、如果发生多态,那么无法调用子类自己独有方法和属性。

编译看左边,运行看右边

9.7.5 多态的产生条件
  • a、必须要有继承关系
  • b、必须要有方法重写
  • c、必须要有父类的引用指向子类的对象
9.7.6 向上转型和向下转型

如果发生多态要调用子类自己独有的方法和属性,那么需要发生向下转型。

但是发生向下转型之前必须要发生过向上转型

Pet pet = new Dog(); //向上转型
Dog d = (Dog)pet; //向下转型
9.7.7 instanceOf关键字
  • 语法: 对象名 instanceof 类型
  • 作用:判断该对象是否属于该类型。属于返回true,否则返回false
  • 应用场景:在向下转型之前,最好先做一个判断。以免发生类型转换异常的错误
9.7.8 多态的应用场景
  • 将参数改为父类类型,使用更加等宽泛和灵活
  • 将返回值类型改为父类类型,更将灵活

目录
相关文章
|
30天前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
25 1
|
2月前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
25 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
2月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
45 2
|
4月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
3月前
|
SQL 安全 Java
JAVA代码审计SAST工具使用与漏洞特征
JAVA代码审计SAST工具使用与漏洞特征
106 2
|
4月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
39 4
|
4月前
|
SQL 安全 Java
JAVA代码审计SAST工具使用与漏洞特征
JAVA代码审计SAST工具使用与漏洞特征
97 1
|
4月前
|
Java
接口和抽象类【Java面向对象知识回顾②】
本文讨论了Java中抽象类和接口的概念与区别。抽象类是不能被实例化的类,可以包含抽象和非抽象方法,常用作其他类的基类。接口是一种纯抽象类型,只包含抽象方法和常量,不能被实例化,且实现接口的类必须实现接口中定义的所有方法。文章还比较了抽象类和接口在实现方式、方法类型、成员变量、构造方法和访问修饰符等方面的不同,并探讨了它们的使用场景。
接口和抽象类【Java面向对象知识回顾②】
|
3月前
|
存储 Java 程序员
Java基础-面向对象
Java基础-面向对象
30 0
|
4月前
|
Java 开发者
Java 面向对象
Java 是一种面向对象的编程语言,通过对象与类的概念组织代码和数据。面向对象编程的核心包括类、对象、继承、多态、封装和抽象。类是对象的蓝图,定义了属性和行为;对象则是类的实例。继承允许子类继承父类的属性和方法,增强代码复用性;多态则支持通过相同接口调用不同类型对象的行为,包括方法重载和重写。封装通过公共方法隐藏对象细节,提高安全性;抽象则对对象特征进行提炼,通过抽象类和接口实现。理解这些概念有助于设计高效、可维护的 Java 应用程序。
31 0