面向对象深思

不管是java程序猿还是c++程序猿,在找工作的时候总会看到一个招聘条件:深刻理解面向对象编程。那么什么是面向对象?通过对象作为程序猿的我们可以联想到哪些技术?这篇文章就从面向对象开始说起,并逐步深入。

什么是面向对象?

<java编程思想>里第二章的标题是:一切都是对象。并通过电视机与遥控器的例子说明了对象与引用的关系。文章让读者把电视机视为对象,把遥控器视为对象的引用,通过遥控器来调控电视机(即引用与对象的关联)。个人觉得这个抽象的比喻有点牵强,因为现实生活中电视机可以抽象为一类,而摆在家里的小米4K液晶电视可以理解为电视机这个类的对象。

面向对象是当今软件开发的主流方法之一,将数据与对数据的操作放在一起(封装),作为一个互相依存的整体,即为对象;对同类对象抽象出共性则为类。

面向对象特点:封装、继承、多态

封装:将客观事物抽象为类(如电视机),每个类对自身数据做保护(java访问权限)

继承:现实世界中有各种分类,如:生物有动物和植物,动物又有不同的科目如食肉动物、食草动物等。将现实中的概念映射为程序中的概念。在继承关系中,有父类和子类,父类又叫基类,子类又名派生类。之所以叫继承,是因为子类继承了父类的属性和行为。

多态:李宇春和张靓颖都会唱歌,但是他们唱出来的歌声是不一样的风格,抽象理解为:同一个行为具有多个不同表现形式或形态的能力。多态是依托于继承关系的,多态行为的触发需要满足三个条件:继承、重写、父类引用指向子类方法。

又见电视机

/**
家用电器
*/
public abstract class DomesticAppliance {
    /**
     * 外观
     */
    private String appearance;


    /**
     型号
     */
    private String model;




    public String getAppearance() {
        return appearance;
    }
    public void setAppearance(String appearance) {
        this.appearance = appearance;
    }
    public String getModel() {
        return model;
    }
    public void setModel(String model) {
        this.model = model;
    }
    /**
     * 功能
     */
    abstract void function();
}
/**
*电视机
/
public abstract class Television extends DomesticAppliance {
    /**
     * 是否为彩色电视
     */
    private boolean colorized;


    public boolean isColorized() {
        return colorized;
    }


    public void setColorized(boolean colorized) {
        this.colorized = colorized;
    }
}
/**
*彩色电视机
*/
public class ColorizedTelevision extends Television {
    @Override
    void function() {
        setColorized(true);
        System.out.println("watch color show!");
    }
}


/**
*黑白电视机
*/


public class WhiteTelevision extends Television{


    @Override
    void function() {
        setColorized(false);
        System.out.println("watch white show!");
    }
}

类图继承关系:

以上便是对面向对象的思考,如有讲解不到之处,还请及时留言指出不足。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值