具有相同或相似性质的一组对象的抽象就是类,类是对一类事物的描述,是抽象的、概念上的意义;

对象是实际存在的该类事物的每个个体,因此也称为实例;

对象的抽象是类,类的具体化就是对象,也可以说类的实例就是对象。类用来描述一系列对象,概述了每个对象应包括的数据,并概述了每个对象的行为特征。

面向对象的三个基本特征:

一、封装
        对象要有一个明确的边界;边界的划分(对象各司其职、对象的粒度、对象的可重用性)
        具体来说:
                1.属性: 私有 private(提供set和get方法)
                2.方法: 公开或私有public/private
                3.方法声明 --> 公开
                  方法实现 --> 隐藏
                 实现改变时,对对象的使用者没有影响。
 
二、继承
        共性放到父类,特性放到子类;子类,父类 --> 其实就是特殊 --> 一般
        1.关键字: extends  例如:Dog extends Animal{}
        2.java中一个类最多只能有一个直接的父类,即单继承(具有简单性、树形结构),
          C++中是单继承
          java中要实现多继承,通过接口来实现。
        3.父类中所有属性和方法都能继承给子类;父类中的私有方法不能继承给子类。
        4.java中的访问修饰符

访问修饰符

访问权限

 继承 

private       

本类内部

不能继承

default       

本类+同包

同包子类可以继承

protected     

本类+同包+不同子包

可以继承

public        

公开

可以继承

5.构造对象过程
                   (1)分配空间
                   (2)递归地构造父类对象
                                a. 父类 初始化属性
                                b. 父类 构造方法
                   (3)初始化属性
                   (4)调用构造方法

6.super  
               用法:
                   super()  调用父类的构造方法,只能出现在构造方法的第一行
                   super.方法名   super表示父类的对象,通过它去调用父类的方法
               注意:在写类的时候,一定要写默认无参的构造方法,如果一个构造方法的
                     第一句既不是this(),也不是super()时,那么就会在这里隐含的调用
                     他的父类的无参的构造方法,即隐含的有super()。

三、多态
            运行时多态。
            子类的对象放在父类的引用中,例如 Animal a=new Dog,子类对象当父类对象来使用。
        1.多态原则:
                  (1)对象类型不变
                  (2)只能用引用调用其引用类型中定义的方法
                  (3)运行时,根据对象的实际类型去找子类覆盖之后的方法
             例子:
                  有Animal类中有eat()和sleep()两个方法,sleep()中睡8小时;子类Dog中有
                  eat()方法,sleep()方法中睡6小时,还有wangwang()方法。
                  现创建Animal a=new Dog(); 不能调用a.wangwang(),调用a.sleep()输出睡6小时。

2.对象的强制转换
                 格式: 引用 instanceof 类型
                        引用所指的对象是否与类相符,返回值boolean值。
                 用法:
                       Animal a=new Cat();
                       if(a instanceof Dog)
                       {
                          Dog d=(Dog)a;
                          d.wangwang();
                        }
                 说明:如果只有Dog d=(Dog)a;运行时错误,因为a是Cat而不是Dog (多态原则第一条)

3.多态的灵活变换
                  (1)用于参数列表上:
                               public void m(A a){} 可以用A类的任何子类对象作为参数
                  (2)用在返回值上:
                              public A m(){}  这个方法可能返回A类的任何子类对

面向对象概念及对象、抽象、类的解释相关推荐

  1. [再学Python] - 面向对象的程序设计- 对象和类

    对象和类 对象包含两种特征: 状态 行为 类:某种类型集合的描述. 属性:类本身的一些特性. 方法:类所能实现的行为. 类的定义 类的定义的语法 class classname[(父类名)]: [成员 ...

  2. Python面向对象设计:对象与类,继承————以大鱼吃小鱼为例

    前言 编写类时,并非总是要从空白开始.如果要编写的类是另一个现成类的特殊版本,可使用继承.一个类继承另一个类时,它将自动获得另一个类的所有属性和方法:原有的类称为父类,而新类称为子类.子类继承了其父类 ...

  3. Python零基础速成班-第9讲-Python面向对象编程(上),对象和类、初始化、继承、重写、多态、类方法、组合

    Python零基础速成班-第9讲-Python面向对象编程(上),对象和类.初始化.继承.重写.多态.类方法.组合 学习目标 修饰器 面向对象编程:对象和类.初始化.继承.重写.多态.类方法.组合 课 ...

  4. 什么是类 ? 什么是对象 ? 类和对象有什么关系 ?

    面向对象(Object Oriented,OO). 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用 ...

  5. C++面试题-面向对象-面向对象概念

    C++面试题-面向对象-面向对象概念 问:说说C++和C的主要区别? 答: C语言属于面向过程语言,通过函数来实现程序功能.而C++是面向对象语言,主要通过类的形式来实现程序功能. 使用C++编写的面 ...

  6. a22_scala 伴生对象 伴生类

    目录 scala outline 为什么会有伴生对象这个概念 伴生对象 伴生类 代码演示 scala outline scala outline 为什么会有伴生对象这个概念 因为Scala语言是完全面 ...

  7. UML2面向对象分析与设计 -- 面向对象思维(概念、面向对象技术的发展历史、对象和类、面向对象技术的相关原则:抽象 封装 分解 泛化 多态 分层 复用)

    文章目录 1. UML2面向对象分析与设计 学习目标 2. 面向对象思维 2.1 学习目标 2.2 什么是面向对象 2.3 面向对象技术的发展历史 2.4 面向对象技术的优势 2.4.1 便于沟通:在 ...

  8. *抽象对象的类解释 数解释和真值解释---- 布尔逻辑之五****

    *抽象对象的类解释 数解释和真值解释 布尔逻辑之五 布尔在他的布尔逻辑之中,给出了全与无两个类别,但其后,他又相继给出了这对同样观念的另外两种解释.这个全与无究竟是个什么东西,清楚明白地给出描述不是一 ...

  9. python3对象初始化_Python 面向对象概念 类和对象 对象初始化__init__ 绑定与非绑定...

    面向对象 (Object Oriented Programming,简称OOP) 1.什么是面向对象:面向对象编程是一种思想,它指导程序员如何编写出更好的程序.它的核心是对象,此时程序员从操作者变成了 ...

最新文章

  1. java 小对话框_创建Java对话框
  2. python真的超过java了吗-Python 的开发效率真的比 Java高吗?
  3. UIRecorder入门
  4. pytorch 常用的 loss function
  5. lr与svm如何选择-面试
  6. 为什么那么多人要学Java?这三个原因告诉你
  7. Spring Enable* 注解
  8. Ubuntu下跑通py-faster-rcnn、详解demo运作流程
  9. Tensor:逐元素操作
  10. 利用axios获取数据并渲染到视图层
  11. 计算机刻录光盘不显示,为什么我的CD刻录光盘的容量在
  12. Ubuntu18.04录音无声音解决
  13. 容器化RDS|计算存储分离 or 本地存储?
  14. jks转换 p12、keystore、pk8、x509.pem 命令
  15. React组件Input输入拼音时触发搜索的解决方案
  16. mac迅雷精简版(迅雷Mac)简约瘦身版
  17. 计算机辅助设计课程设计评分标准,CAD考试规则评分标准.doc
  18. 计算机上可以插键盘吗,电脑外接键盘好用吗 哪些键盘可以外接电脑使用
  19. 【Linux-网桥原理分析】
  20. 连锁药店携手电商开拓新局面

热门文章

  1. FPGA入门-腾讯云布道师团队-专题视频课程
  2. 成功搭建Selenium运行环境,能够使用Chrome浏览器打开任意网页
  3. linux 监控报文命令 nc,linux监控命令nc用法
  4. 论文阅读之《CrowdPose: Efficient Crowded Scenes Pose Estimation and A new Benchmark》
  5. Python Requests实现天气预报
  6. Deepin 使用教程:前言
  7. VBScript UBound 函数
  8. 量化交易软件该怎么选择
  9. 深度学习环境配置10——Ubuntu下的torch==1.7.1环境配置
  10. 微软需要Twitter来对抗Google