通俗易懂,带你了解应用面向对象(含例子超简单)

2023-11-18

面向对象的一些基本概念

软件工程第六版

下面都是面向对象的精华,好好吸收,完全可以掌握

  • 拿一个圆做例子,有半径、周长、颜色、位置,我们现在有3个不同的圆,每个圆就是一个不同的的对象。但是他们都有相同的数据(半径、周长…)和相同的操作(显示自己、缩小半径等),因此他们是同一类事物,用Circle类来定义,而3个不同的圆可以声明为circle1,circle2,circle3,是具体的对象

  • 实例就是由某个特定的类所描述的一个具体的对象,类是抽象的,并不是真是存在的,谁也没有见过抽象的圆。换句话来说,类就是建立对象时使用的**”样板“,按照这个样本所建立的一个个具体的对象,就是类的实际例子,成为实例**。

  • 消息是某个操作的规格说明,比如MyCircle.show(GREEN),MyCircle就是对象的名字,show就是消息名,GREEN就是消息的变元。

  • 方法就是对象所执行的操作,响应消息的方法。

  • 属性就是类中所定义的数据

  • 封装就是包装一个事务,使外界不知道该事物的具体内容。

  • 继承就是能够直接获得已有的性质和特征,不必重复定义他们,子类自动地共享基类中定义的数据和方法的机制。

    举个例子:现在有两个类,A类和B类,让B类继承A类,B类除了自己的特性(数据和操作)之外,还从父类A继承特性。当创建A类a1时,a1以A类为样板创建实例变量(在内存中分配所需要的空间),但它并不从A类中福之所一定的方法。

    当创建 B类的实例b1时,b1既要以B类为样版创建实例变量,又要以A类为样版创建实例变量,b1所能执行的操作既有B类中定义的方法,又有A类中定义的方法,这就是继承。如果B类中又定义了和A类中同名的数据或操作,则b1仅使用B类中定义的这个数据或操作,除非采用特别措施,否则A类中与之同名的数据或操作在b1就不能使用。

  • 多态本意是”有许多形态“,希腊语。指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。也就是说,在类等级的不同层次中可以共享一个行为的名字,然而不同的层次中的每个类却各自按自己的需要来实现这个行为。当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法。

    举个例子:A a=new B(); a.show(); 这就是多态 //show必须是继承的方法。

    多态使用的细节:

    1. 多态情况下,子父类存在同名的成员变量时,访问的是父类的成员变量。
    2. 多态情况下,子父类存在同名的非静态的成员函数时,访问的是子类的成员函数。
    3. 多态情况下,子父类存在同名的静态的成员函数时,访问的是父类的成员函数。
    4. 多态情况下,不能访问子类特有的成员。

    多态的前提:必须存在继承或者实现关系。

  • 重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字。注意和重写的区别。

拿上面的思想举例子演示

Animal.java
package cn.extendsdemo;

public class Animal {
    private int age;
    private  String name;
    private String fiece;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getFiece() {
        return fiece;
    }

    public void setFiece(String fiece) {
        this.fiece = fiece;
    }
    public  void  run(){
        System.out.println("我会跑");
    }
    public  void eat(){
        System.out.println("我会吃");
    }


    @Override
    public String toString() {
        return "Animal{" +
                "age=" + age +
                ", name='" + name + '\'' +
                ", fiece='" + fiece + '\'' +
                '}';
    }

    public static void main(String[] args) {
        Animal a=new Dog();//多态
        a.eat();
    }
}

Cat.java

public class Cat extends Animal{
static void main(String[] args) {
        Cat tom=new Cat();//tom 是一个对象,是具体的对象,而Cat是个抽象的概念,所以叫类。设计要求:类中的属性是所有对象所共享的。
        //继承父类的方法
        tom.eat();
        tom.run();
        //继承了父类的属性
        tom.setAge(21);
        tom.setFiece("温柔");
        tom.setName("Tom");
        System.out.println(tom);

    }
}

Dog.java
package cn.extendsdemo;

public class Dog extends Animal {
    public  void  eat(){//重写
        System.out.println("我只吃肉和骨头");
    }

    public static void main(String[] args) {
        Dog dog=new Dog();
        dog.eat();//当子类和父类方法冲突时,优先执行子类,父类功能不能用。
        dog.run();

    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通俗易懂,带你了解应用面向对象(含例子超简单) 的相关文章

随机推荐

  • 空间里种菜、偷菜,重现只属于80后的回忆

    何为 无人农场 中国工程院院士罗锡文用五句话高度概括 耕种管收生产环节全覆盖 机库田间转移作业全自动 自动避障异况停车保安全 作物生产过程实施全监控 智能决策精准作业全无人 随着新一代信息技术飞速融入传统产业 农业数字化 网络化 智能化逐步
  • cesium js 路径_Cesium开发入门篇

    01 开发环境准备 利用Cesium API进行二次开发属于Web前端开发范畴 目前比较火的Web三剑客包括React Vue AngularJS 每个js库的详细介绍可转至官网查看 在此不做详细介绍 本次开发环境是基于Vue搭建的 需要安
  • 搭建VUE脚手架 + 引入element-ui

    转载路径 https segmentfault com a 1190000011023102 从新建vue项目到引入组件Element 一 新建项目 1 查看 node是不是已经安装好命令 node v 没有安装的先安装环境 https n
  • 云服务器被ddos五个解决方案

    如果你的网站或网络设备遭到了DDOS攻击 你可以采取以下步骤来解决这个问题 1 首先 应尽快联系你的厂家ISP 告诉他们你正在遭受DDOS攻击 他们可能会帮助你拦截攻击流量 并提供其他帮助 2 尝试使用拥有较大带宽的服务器或CDN 内容分发
  • Android Studio 常用快捷键整理(转载+体验)

    一 调换格式 Ctrl D 复制行 其实是复制粘贴到下一行 有用 alt shift 移动到上一行 行内容向上移动 剪切粘贴到上一行 还行 alt shift 移动到下一行 剪切粘贴到下一行 Ctrl R 查找后替换 逐个查找 自动跳跃 手
  • 域名备案指南

    在运营网站的过程中 有一件不可忽略的事情 那就是网站上线之前需要完成 ICP 备案 根据工信部规定 所有在境内运行的服务 有境内公网 IP 地址 能够通过公网访问 都必须进行 ICP 备案 1 哪些单位需要办理互联网网站备案 已在工信部备案
  • CentOS8安装redis5

    CentOS8安装redis5 CentOS8的安装镜像已经包含redis5的软件包 可以直接通过yum安装 安装并启动redis5 yum install y redis systemctl start redis service sys
  • Oracle VM VirtualBox安装及使用常见问题

    1 安装系统显示FATAL NO bootable medium found System halted 镜像问题 需要下载纯净的镜像 推荐MSDN所提供的镜像 从网上或者系统之家下载的将无法启动 https msdn itellyou c
  • uniapp小程序单页面改变手机电量,头部通知的颜色效果demo(整理)

    onShow 改变电池的颜色 wx setNavigationBarColor frontColor ffffff 只支持两种颜色 backgroundColor ffffff animation duration 1
  • 刷题day_9 : 删除链表的倒数第 N 个结点

    题意描述 给你一个链表 删除链表的倒数第 n 个结点 并且返回链表的头结点 利用虚拟头结点 和双指针法 如果要删除倒数第n个节点 让fast移动n步 然后让fast和slow同时移动 直到fast指向链表末尾 删掉slow所指向的节点就可以
  • MoCaPose:在宽松服装中实现动作捕捉

    动作姿态是人类个体活动和互动的基本信息来源 采集人们的动作信息能实现了解 分析日常生活等功能 尽管在宽松服装上可以使用IMU实现动作捕捉 但由于需要将大量IMU并将其节点牢固 精确地固定在特定的身体位置 因此并不适合许多现实生活中的应用 这
  • python cgi如何获得html post 的信息,如何在Python CGI脚本中读取所有HTTP标头?

    可以使用python在apache CGI脚本中获取自定义请求标头的值 解决方法与此类似 Apache的mod cgi将为收到的每个HTTP请求标头设置环境变量 以这种方式设置的变量都将带有HTTP 前缀 因此例如x client vers
  • pluto实现分析(10)

    本文档的Copyleft归yfydz所有 使用GPL发布 可以自由拷贝 转载 转载时请保持文档的完整性 严禁用于任何商业用途 msn yfydz no1 hotmail com 来源 http yfydz cublog cn 10 主机对
  • 信息网络传播权 服务器,信息网络传播权的特征

    信息网络传播权的特征 著作权法法律快车2018 05 1510 21 062415人阅读15赞 不论是专业人士 还是普通民众 对 广播权 和 信息网络传播权 的感知总是通过日常频繁接触广播电台 电视台 网站等传播媒介得以实现的 那么信息网络
  • pytorch低版本环境加载高版本(1.6+)模型报错(xxx is a zip archive (did you mean to use torch.jit.load()?))

    问题描述 transformers 4 0 版本训练出来的模型 在3 0的Model from pretrained中加载会报错 pytorch model bin is a zip archive did you mean to use
  • 最近读的AIGC相关论文思路解读

    AIGC之SD可控生成论文阅读记录 提示 本博客是作者本人最近对AIGC领域相关论文调研后 临时记录所用 所有观点都是来自作者本人局限理解 以及个人思考 不代表对 如果你也正好看过相关文章 发现作者的想法和思路有问题 欢迎评论区留言指正 既
  • renren-fast-vue 无法启动成功原因

    renren fast vue 无法启动主要是因为node版本过高 需要使用8x版本 并且安装node sass node版本 https blog csdn net weixin 42713970 article details 8650
  • python实现全排列_python实现全排列代码(回溯、深度优先搜索)

    从n个不同元素中任取m m n 个元素 按照一定的顺序排列起来 叫做从n个不同元素中取出m个元素的一个排列 当m n时所有的排列情况叫全排列 公式 全排列数f n n 定义0 1 1 递归实现全排列 回溯思想 1 1 思想 举个例子 比如你
  • X-admin框架中change事件失效如何实现省市区三级联动

    Uncaught TypeError layui form is not a function的错误 我现在使用的就是X admin1 1版本的后台模板 在实现了三级联动的情况下想套上去结果发现会报上面的错误等等 在html中select标
  • 通俗易懂,带你了解应用面向对象(含例子超简单)

    面向对象的一些基本概念 软件工程第六版 下面都是面向对象的精华 好好吸收 完全可以掌握 拿一个圆做例子 有半径 周长 颜色 位置 我们现在有3个不同的圆 每个圆就是一个不同的的对象 但是他们都有相同的数据 半径 周长 和相同的操作 显示自己