码迷,mamicode.com
首页 > 其他好文 > 详细

向对象的的基本特征:抽象,封装,继承,多态

时间:2015-06-15 14:40:55      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:封装   设计   

抽象:

抽象就是提取出事物之间的共性,即个体所属的类别的共有属性和方法。
比如我们要设计一个ArrayList容器,它的底层是用数组实现,并且能够实现当容量不足时,申请一个更大的数组,将原数组的内容复制过去。
首先,分析出ArrayList是属于容器,那么我们要抽象出容器的共性。
即一个Collection接口,然后再让ArrayList类继承这个接口,即类的实现要依赖于抽象来实现。 
然后使用的时候是这样子使用Collection<E> container = new ArrayList<E>();(因为Collection抽象出了容器的共性),
那么只要将new ArrayList<E>() 改成 new Set<E>()即可。
public interface Collection<E> implements Iterator{
    public int size();
    public isEmpty();
    public void add(E e);
    public void remove(E e);
    public void clear();
    public Iterator<E> iterator();
    .......
}
public class ArrayList<E> implements Collection<E>{
    public int size();
    public isEmpty();
    public void add(E e);
    public void remove(E e);
    public void clear();
    public Iterator<E> iterator();
    .......
    private int capacity;
    private E[] dataContainer;
    public ArrayList();
    public int getCapacity();
    public void remove(int index);
    public add(E e, int index);
}

封装:

封装是将对象的属性和行为绑到一起的机制,并且尽可能的隐藏内部的属性和实现。
并且向外提供接口,接口反映了该类的功能。
这样子的好处是,只能通过给定的接口修改类的属性,这样子大大提高了程序的健壮性。
并且类内部的实现和外部的展示所用到的数据类型可能不一样,类的内部可以随意修改,只要提供的接口不变即可,这样子大大提高了程序的灵活性。
public class People{
    private String name;
    private int age;
    public People(String name, int age){
        setName(name);
        setAge(age);
    }
    public String getName(){
        return name;
    }
    //属性封装起来,通过特有的接口设置属性,处理一些意外的取值,增强健壮性
    public void setName(String name){
        if(name==null)
            //做出某些提示信息
        else
            this.name = name;
    }
    public int getAge(){
        return age;
    }
    public void setAge(int age){
        if(age<0 || age>150)
            //年龄超出可能的取值范围,做出某些提示信息
        else
            this.age = age;
    }
}
封装使得我们使用类的时候不关心类的内部实现,只关心它的接口,这和客观世界一样,我们使用某种东西,只关心它的功能,而不关心它是怎么实现的。

继承:

抽象的原则是舍弃事物的特性,提取其共性。如果不考虑事物的特性,那么就不能反映客观世界中的层次关系。
所以继承是是在抽象(共性)的基础上,重新考虑抽象过程中舍弃掉的那部分事物的特性。继承的优点
1、相比不使用继承的类,派生类的描述更加简洁。(我们立志于设计小巧的类,这样更容易于理解)
2、实现代码复用
3、使得程序易于维护和扩展,(暂时不明白,等我学了工厂模式来举个栗子说明)

多态:

多态是不同事物对同一个消息(方法)做出不同不同的反应的能力(函数体)。多态是建立在继承和父类引用指向子类引用的基础上。
上面那个ArrayList和Set的例子就说明了多态。

向对象的的基本特征:抽象,封装,继承,多态

标签:封装   设计   

原文地址:http://blog.csdn.net/u012501262/article/details/46502953

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!