Java_面向对象三大特征
面向对象特征
面向对象三大特征: 继承, 封装, 多态
继承
继承:
- 子类可以从父类继承属性和方法
- 对外公开某些属性和方法
要点(eclipse中Ctrl+T查看继承结构)
1.父类也称超类, 基类, 派生类
2.Java中只有单继承, 没有C++那种多继承
3.接口有多继承
4.子类继承父类, 可以得到父类的全部属性和方法(除了构造方法), 但不一定可以直接访问(例如父类中的私有属性和方法)
5.如果定义一个类时, 没有调用extends, 则它的父类是java.lang.object
Object类是所有Java类的根基类, 也就意味着所有的Java对象都有object类的属性和方法
关键字super
super是直接父类对象的引用, 可以通过super来访问父类中被子类覆盖的方法或属性
属性/方法查找顺序(如变量h)
1.查找当前类中有没有属性h
2.依次上溯每个类的父类, 查看每个父类中有没有j, 直到object
3.如果没有找到, 则出现编译错误
4.上述步骤中, 只要找到变量h, 则这个过程终止
构造方法调用顺序
构造方法第一句总是super(...)来调用父类对应的构造方法. 所以流程是先向上追溯到object, 然后再依次向下执行类的初始化和构造方法, 直到当前子类为止, 同静态初始化块一样, 先把静态初始化全部执行(父类直至object和子类)完后, 再执行构造方法
封装
封装作用
- 对外隐藏某些属性和方法
- 对外公开某些属性和方法
| 修饰符 | 同一个类 | 同一个包 | 不同包的子类 | 所有类 |
| private | * | |||
| defualt | * | * | ||
| proteced | * | * | * | |
| public | * | * | * | * |
成员(成员变量或成员方法)访问权限共四种:
private
只能被这个类本身访问
default
可以被这个类本身访问
可以被同一个包中的类访问
protected
可以被这个类分数访问
可以被同一个包中的所有其他类访问
被它的子类(同一个包以及不同包的子类)访问
public
可以被该项目的所有包中的所有类访问
类的访问权限共两种:
public
可以被同一项目中所有的类访问(必须与文件名同名)
default
可以被同一个包的类访问
封装要点:
类的属性的处理
一般使用private访问权限
提供相应的get/set方法来访问相关属性, 这些方法通常用public修饰, 以提供对属性的赋值与读取操作(boolean变量的get方法是以is开头)
一些只用于本类的辅助性方法可以用private修饰
希望其他类调用的方法用public修饰
多态
多态: 指同一个方法调用, 由于对象的不同, 可能会有不同的行为, 适应多种变化, 使得代码变得更加通用
属性没有多态
引用变量的两种类型:
- 编译时类型(模糊一点, 一般是一个父类)
由声明时类型决定- 运行时类型(运行时, 具体是哪个子类就是哪个子类)
由实际对应的对象类型决定
多态要点:
1.多态是方法的多态, 不是属性的多态(多态与属性无关)
2.多态的存在要有3个必要条件: 继承, 方法重写, 父类引用指向子类对象
3.父类引用指向子类对象后, 用该父类引用调用子类重写的方法, 此时实现多态
4.多态不能调用声明类型中没有的方法
Java_面向对象三大特征的更多相关文章
- Java中面向对象三大特征
也就是说在这里"人"是多态的, 在不同的形态时,特征行为是不一样的, 这里的"人", 同时有两种形态,一种是教师形态,一种是学生形态,所对应的特征行为分别是&q ...
- OOP面向对象 三大特征 继承封装多态
OOP面向对象 ----三大特征 继承封装多态 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构 ...
- Java学习:面向对象三大特征:封装、继承、多态之封装性
面向对象三大特征:封装.继承.多态. 封装性在Java当中的体现: 方法就是一种封装 关键字private也是一种封装 封装就是将一些细节信息隐藏起来,对于外界不可见. 问题描述:定义Person的年 ...
- Java学习:面向对象三大特征:封装性、继承性、多态性之多态性。
面向对象三大特征:封装性.继承性.多态性之多态性. extends继承或者implemens实现,是多态性的前提. 例如:小菜是一个学生,但同时也是一个人.小菜是一个对象,这个对象既有学生形态,也有人 ...
- 面向对象三大特征之封装与static——(Java学习笔记四)
面向对象 编程本质:以类的方式组织代码,以对象的方式组织(封装)数据 对象:具体的事物,某个类的对象(实例) 类:是对对象的抽象,用于描述同一类型的对象的一个抽象概念 对象和类的关系:特殊到一 ...
- JavaSE基础知识(5)—面向对象(5.4面向对象三大特征:封装、继承、多态)
面向对象编程具有三大特征: 封装 继承 多态 一.封装 1.好处 狭义的封装:也就是属性的封装,避免了任意赋值的危险,提高了数据的安全性! ①隐藏一个类中不需要对外提供的实现细节 ②使用者只能通过实现 ...
- 封装继承多态-java面向对象三大特征
第七章 封装和继承 一.面向对象的三大特征 封装.继承.多态 二.封装 将类的属性(字段)设置为私有的(private),并添加getter/setter方法操作属性. 注意:get|set方法的固 ...
- 【JavaSE】面向对象三大特征——封装、继承、多态
前言:本文主要介绍思想 封装 封装这一概念并不仅存在与面向对象中,甚至说封装这一概念不仅限于编程中,其实生活中的封装无处不在.比如 需求:你到银行取钱 参数:你只需要提供银行卡和密码 返回值:柜员会将 ...
- Java面向对象三大特征
封装: 首先,属性可用来描述同一类事物的特征, 行为可描述一类事物可做的操作,封装就是要把属于同一类事物的共性(包括属性与行为)归到一个类中,以方便使用.比如人这个东东,可用下面的方式封装:人{ 年龄 ...
随机推荐
- 树形DP 学习笔记
树形DP学习笔记 ps: 本文内容与蓝书一致 树的重心 概念: 一颗树中的一个节点其最大子树的节点树最小 解法:对与每个节点求他儿子的\(size\) ,上方子树的节点个数为\(n-size_u\) ...
- Talk is cheap. Show me the code的由来
Date: Fri, 25 Aug 2000 11:09:12 -0700 (PDT) From:Linus Torvalds Subject Re: SCO: "thread creati ...
- Vue结合Django-Rest-Frameword结合实现登录认证(二)
作者:小土豆biubiubiu 博客园:https://www.cnblogs.com/HouJiao/ 掘金:https://juejin.im/user/2436173500265335 微信公众 ...
- 常见的Mysql十款高可用方案
简介 我们在考虑MySQL数据库的高可用架构时,主要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断. 用作 ...
- lua 1.0 源码分析 -- 总结
读完 lua1.0 的源码感触:1. 把复杂的代码写简单2. pack 的内存回收3. hash 实现简单,但是应该可以改进,看高版本的代码怎么实现4. lua 初始化环境做了什么,就是一组全局变量初 ...
- MeteoInfoLab脚本示例:AVHRR HDF数据
这里演示读取和绘制AVHRR hdf格式数据,以sst(海表面温度)为例. 脚本程序: #Add data file f = addfile('D:/Temp/hdf/2006001-2006005. ...
- MeteoInfo脚本示例:读取FY3A AOD HDF文件
FY3A卫星有AOD产品数据,HDF格式,这里示例用MeteoInfo脚本程序读取和显示该类数据. 脚本程序如下: #----------------------------------------- ...
- 【Linux编译环境的搭建】Linux都没有,怎么学Linux编程?
本文准备从0开始,一步步搭建一套属于自己的多节点Linux系统环境,这将是后续学Linux.用Linux.Linux环境编程.应用和项目部署.工具实验等一系列学习和实践的基石,希望对小伙伴们有帮助. ...
- 【最大匹配+二分答案】HDU 2236 无题II
题目内容 这是一个简单的游戏,在一个\(n×n\)的矩阵中,找\(n\)个数使得这\(n\)个数都在不同的行和列里并且要求这\(n\)个数中的最大值和最小值的差值最小. 输入格式 输入一个整数\(T\ ...
- matplotlib直方图
import matplotlib.pyplot as plt import matplotlib as mpl from matplotlib.font_manager import FontPro ...