美文网首页IT@程序员猿媛っ碎片化代码
架构笔记丨浅谈Java面向对象编程

架构笔记丨浅谈Java面向对象编程

作者: 白晓明 | 来源:发表于2019-07-20 10:14 被阅读4次

Java中一切皆为对象,但此对象非彼对象,彼对象却是此对象的一种具体体现。如何理解这句话呢?Java是面向对象的编程语言,对象是面向对象程序设计的核心。而所谓的对象就是现实世界中的实体,对象与实体是一一对应的。

来自网络
在实际开发中,很多时候我们都去new一个对象,而这个对象都可以是现实世界中的某个实体的映射。比如你的对象(女朋友),其就可以作为一个对象,她的状态(如姓名、年龄、性别、身高、体重、出生日期等等)与行为(如喜欢跑步、唱歌、旅游等等)来组成这个对象。说了这么多,对象是什么呢?对象是一个自包含的实体,用一组可识别的特性和行为来标识[DH]。在上面的例子中,你女朋友的状态就是实体的属性,行为就是实体的方法,两者构成了这个实体(你女朋友)。

我们也可以简单的理解为对象是现实世界实体的抽象体,将原本实体所具有的状态和行为通过对象的属性和方法来体现。比如哈士奇具有年龄、体重、毛色等状态,跑、跳、吃、睡等行为,我们将其通过对象来表述的话,哈士奇所具有的状态即对象的状态,哈士奇所具有的行为即对象的方法。

/**
 * 哈士奇
 * @author ohayoi
 */
public class Husky {

    /*
     * 哈士奇的状态
     */
    private String name;//称呼
    private int age;//年龄
    private double weight;//体重
    private String color;//毛色
    
    /*
     * 哈士奇的行为
     */
    //跑
    public void run() {
        System.out.println(this.name + "在外面跑了一圈~");
    }
    //跳
    public void jump() {
        System.out.println(this.name + "跳了三次~");
    }
    //拆家
    public void demolitionOfHome() {
        System.out.println(this.name + "又完成了一次拆家任务~");
    }
}

完成哈士奇对象的实现后,我们想在增加一个波斯猫的对象,波斯猫也具有称呼、年龄、体重、毛色等状态,同时也具有跑、跳等行为,但其不具备拆家的行为,具有舔毛的行为。

/**
 * 波斯猫
 * @author ohayoi
 */
public class Burmese {
    /*
     * 波斯猫的状态
     */
    private String name;//称呼
    private int age;//年龄
    private double weight;//体重
    private String color;//毛色
    
    /*
     * 波斯猫的行为
     */
    //跑
    public void run() {
        System.out.println(this.name + "在外面跑了一圈~");
    }
    //跳
    public void jump() {
        System.out.println(this.name + "跳了三次~");
    }
    //舔毛
    public void lickingHair() {
        System.out.println(this.name + "用舌头舔自己的毛,自我清洁~");
    }
}

从我们设计的哈士奇和波斯猫的代码来看,状态以及部分行为是重复的代码,假如我们需要更多的动物对象时,如猴子、熊猫、老虎、老鼠等等,我们是不是都要去设计这些对象呢?我们需要对跑这个行为的内容做修改,是不是每个对象都要去修改呢?显而易见,这样设计虽然是可行的,但不便于后续的维护,极易出现错误。那么我们能不能将这些共有的属性和行为抽离出来单独作为一个对象呢?

当然是可以的,这时就引入了类的概念,什么是类呢?类是具有相同特性(属性)和行为(方法)的对象的抽象,说直白一点类就是一个模板,用于描述具有相同状态和行为的一类事物。比如猫、狗、老虎、狮子等都属于哺乳类动物,它们都具有年龄、体重、毛色等状态和跑、跳、吃、睡等行为,那么我们就可以将它们共有的状态和行为放置在一起作为一个模板,这个模板就是我们所说的类,这个类是它们各自的父类(也称作基类),而我们的猫类,狗类等都是继承与这个公共类的,这些类叫做子类(也称作派生类)。

/**
 * 哺乳动物
 * @author ohayoi
 */
public class Mammal {

    /*
     * 哺乳动物具有的公共状态
     */
    private String name;//称呼
    private int age;//年龄
    private double weight;//体重
    private String color;//毛色
    
    /*
     * 哺乳动物具有的公共行为
     */
    //跑
    public void run() {
        System.out.println(this.name + "在外面跑了一圈~");
    }
    //跳
    public void jump() {
        System.out.println(this.name + "跳了三次~");
    }
}
/**
 * 狗类继承与哺乳动物类
 * A @extends B  A继承自B,A为子类,B为父类
 * @author ohayoi
 */
public class Dog extends Mammal{

    //拆家
    public void demolitionOfHome() {
        System.out.println(getName() + "又完成了一次拆家任务~");
    }
}

这里我们已经将对象和类做了简单的说明,下一节我们将聊聊面向对象编程的三大特性——继承、封装、多态。

相关文章

  • 架构笔记丨浅谈Java面向对象编程

    Java中一切皆为对象,但此对象非彼对象,彼对象却是此对象的一种具体体现。如何理解这句话呢?Java是面向对象的编...

  • 浅谈架构-----目录

    浅谈架构——引言 浅谈架构——面向对象 谈架构——文档下载的设计实现

  • JAVA知识泛泛总结

    @(Java) 面向对象编程期末考复习笔记 了解Java Java具有面向对象、与平台(由系统OS和处理器CPU构...

  • 简历介绍

    1,java面向对象(封装,继承,多态,抽象)面向对象编程(oop)是一种计算机编程架构,是指计算机程序是由单个能...

  • 浅谈架构——面向对象

    写在开始:本篇算是浅谈架构系列的正式文章了,计划整个系列文章从面向对象编程开始到设计模式、应用级架构设计模...

  • JavaScript 面向对象编程

    学习笔记,非原创。谢谢 JavaScript的面向对象编程和大多数其他语言如Java、C#的面向对象编程都不太一样...

  • 整理java(1)

    首先java是面向对象编程语言(oop:Object Oriented Programming 面向对象编程)...

  • 面向对象编程,类和对象

    面向对象编程 Java是面向对象的一门编程语言,所以余姚使用者具备面向对象编程的思想。 那么,什么是面向对象编程呢...

  • 浅谈JS中的面向对象

    浅谈JS中的面向对象 本文主要说说本人在JS中对面向对象的理解。 计算机编程语言主要分为面向过程式编程和面向对象式...

  • 浅谈面向对象编程与面向过程编程以及DDD充血Model

    浅谈面向对象编程与面向过程编程以及DDD充血Model 先抛出开头一个问题:一直在说OOP面向对象编程,你现在写的...

网友评论

    本文标题:架构笔记丨浅谈Java面向对象编程

    本文链接:https://www.haomeiwen.com/subject/ixyylctx.html