JavaSE基础知识(5)—面向对象(5.4面向对象三大特征:封装、继承、多态)
面向对象编程具有三大特征:
封装
继承
多态
一、封装
1、好处
狭义的封装:也就是属性的封装,避免了任意赋值的危险,提高了数据的安全性!
①隐藏一个类中不需要对外提供的实现细节
②使用者只能通过实现定制好的方法来访问数据,可以方便的加入控制逻辑,限制对属性的不合理操作
③便于修改,增强代码的可维护性
2、具体实现步骤 ★
①属性私有化(private)
②提供公共的(public)方法:set方法和get方法
示例:
class Person{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
}
3、注意
一般来讲,建议所有属性进行封装。当然如果希望将属性设置成只读的,则可以仅仅提供get方法,如果是只写的,则可以仅仅提供set方法
二、继承
1、概念
一个类没有定义成员,则具备了另一个类的成员,这种现象称为继承
被继承的类称为父类或超类或基类
继承其他类的类称为子类或派生类
2、好处
①提高代码的重用性
②提高代码的维护性和扩展性
3、语法
class 类名 extends 父类类名{}
4、特点★
①子类继承了父类的所有属性和方法,包含私有的,只是访问时先遵循成员的访问权限,当然也可以通过公共的方法去访问
②子类没有继承父类的构造器
③java支持的是单继承,也就是extends后面只能有一个类名
④不能滥用继承。子类和父类必须满足 is-a的关系
⑤java中所有类都直接或间接继承了Object类
⑥类的成员的继承不限于直接父类
5、子类调用父类构造器 ★
①子类不能继承父类的构造器
②子类必须调用父类的构造器,目的是为了初始化父类的信息
③如果子类没有显式调用父类的构造器,则系统将默认调用父类的无参构造器
④如果父类没有无参构造器,则子类必须显式调用父类的有参构造器,否则报错!
语法:super(参数列表)
⑤构造器的调用,不限于直接父类,将一直往上追溯直到Object类
三、多态
1、理解
概念:一种事物有多种表现形态,前面的封装和继承都是为多态打基础的
好处:
①提高代码的重用性和扩展性
②不需要关心每个元素的实际类型,只需要知道它的通用类型,调用比较方便,扩展性更高
2、体现 ★
①方法的重载和重写 √
②对象的多态性(对象的向上转型) ★
注意:对于一个对象来讲,编译类型和运行类型出现了不一致,这种现象称为:多态
编译类型=左边的类型,由编译器检测的类型
运行类型=右边的类型,由解释器检测的类型
相关概念:
本态调用:Person p = new Person();
多态调用:Person p = new Student();
正常方法调用:Student s = new Student(); s.say();
虚拟方法调用:Person p = new Student();p.say();
3、对象转型 ★
(1)向上转型
语法:父类类型 引用名 = new 子类类型();
理解:父类的引用指向了子类对象
特点:
①编译看左边,运行看右边
能调用哪些成员,要看编译类型中定义了哪些成员
运行效果,要看运行类型中的方法执行
②属性没有重写或多态之说
(2)向下转型
语法:子类类型 引用名 = (子类类型)父类 的引用;
特点:
①不能强转父类的对象,只能强转父类的引用
②强转的父类的引用,必须指向的是该目标子类的对象
③可以调用从父类继承来的以及子类本身定义的所有成员
4、多态的应用
(1)多态数组
理解:数组的定义类型为父类类型,元素可以为子类类型
(2)多态参数
理解:方法的形参类型为父类类型,实参可以为子类类型
instanceof:用于判断某对象的运行类型是否是右边的类型XX或XX的子类型
写法:a instanceOf XX
结果:true|false
应用场景:一般放在if条件中用作判断
JavaSE基础知识(5)—面向对象(5.4面向对象三大特征:封装、继承、多态)的更多相关文章
- 深入理解Java面向对象三大特性 封装 继承 多态
1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...
- Java基础——面向对象(封装——继承——多态 )
对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...
- Java面向对象设计主要有三大特征:封装性、继承性和多态性
Java面向对象设计主要有三大特征:封装性.继承性和多态性 一 封装性 1.1 概念:它是将类的一些敏感信息隐藏在类的类部,不让外界直接访问到,但是可以通过getter/setter方法间接访 ...
- java面向对象(封装-继承-多态)
框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...
- php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
1.面向对象 封装继承多态 接口.重载.抽象类.最终类 面向对象 封装继承多态 首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...
- 封装继承多态-java面向对象三大特征
第七章 封装和继承 一.面向对象的三大特征 封装.继承.多态 二.封装 将类的属性(字段)设置为私有的(private),并添加getter/setter方法操作属性. 注意:get|set方法的固 ...
- Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)
Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以 ...
- python面向对象(封装,继承,多态)
python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...
- JavaSE基础知识总结
最近回顾了一下Java的基础知识,决定写成博客梳理一遍,主要是JavaSE部分最基础的知识,适合考前突击,学后回顾,不适合作为初学材料. 简单的列个目录吧: 一.数据类型和运算符 二.流程控制与数组 ...
随机推荐
- 通过setup.py安装项目dependencies
一.使用方法 安装命令 $ pip install -e <option> setup.py 二.具体介绍 pip intall -e 举例一个setup.py $ pip int ...
- pandas学习笔记(一)
Pandas是一款开放源码的BSD许可的Python库,为Python编程语言提供了高性能,易于使用的数据结构和数据分析工具.Pandas用于广泛的领域,包括金融,经济,统计,分析等学术和商业领域.在 ...
- JDK最新版 Jmeter最新版
http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html http://jmeter.a ...
- java+Selenium+TestNg搭建自动化测试架构(1)实现代码和数据的分离
1.主要介绍介绍Java+Selenium+POM的自动化测试框架的搭建,第一个首先实现代码和账号URL等信息的分离.第二点支持跨浏览器,通过读取配置文件的方式实现. 1)将账号URL等信息添加在pr ...
- Centos7上使用tomcat8
1.上传apache-tomcat-8.5.39.tar.gz到/usr/local 2.解压文件:tar -zxvf apache-tomcat-8.5.39.tar.gz 3.把文件夹名改简单一些 ...
- Spring Boot+Spring Security:获取用户信息和session并发控制
说明 (1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9(4)Spring Data JPA 2.0.11.RELEASE(5)hiber ...
- 【HDFS API编程】图解客户端写文件到HDFS的流程
- python———day02
算术运算符 >>>1+2 3 >>>3-2 1 >>>2*2 4 >>>5/2 2.5 >>>5//2 #整除 ...
- Mysql将查询结果合并为一列
利用函数:group_concat(),实现一个ID对应多个名称时,原本为多行数据,把名称合并成一行. 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order B ...
- RPM包指令总结
一.RPM RPM包安装位置 RPM包默认安装路径 /etc/ 配置文件安装目录 /usr/bin/ 可执行的命令安装目录 /usr/lib/ 程序所使用的函数库保存位置 /usr/share/doc ...