标签:
世间任何事物都可以定义为对象。
类就是把对象的公共属性和方法抽离出来形成集合的抽象,也就是说,类是一种抽象,用来描述对象特征的抽象。
实例就是对象,就好比我们,就是人这种抽象的一个实例。
从字面上来看,构造方法是用来构造对象,当对象正在创建时,会通过构造方法对对象进行初始化。
构造方法的特征:
方法重载就是同一个方法,在使用的时候能够根据你参数的类型,从而表现出不同的行为
public class person {
public void eat(){
System.out.println("没东西可以给我吃");
}
public void eat(Fruit fruit){
System.out.println("我正在吃水果");
}
...
}
方法重载提供了函数可扩展的能力,使用时仅需:
优点:
通常,我们在设计一个功能时,总是会把与该功能类似的所有属性和行为都封装在一个类中,这样就可以避免功能内部的行为与别的类产生依赖性,别人使用你的功能时,仅仅需要知道如何调用你的接口来获取想要的信息,不需要理会内部实现到底是怎么做。
对于类的内部,一般开发者只提供必要的接口来访问它的内部属性,不会允许你直接操作它的内部,这样做有利于保证使用者是按照设计者的设计逻辑控制使用,避免因为非法使用而导致错误的发生。
特点:
优点
对象的继承是一种 ‘is-a‘ 的关系,如果两个对象 A 和 B ,可以描述为 ‘B 是 A’,则表明 B 可以继承 A。
继承关系不能简单地理解为父亲和儿子的关系,继承关系实际上是一种特殊关系,就好比猫和哺乳动物,猫是哺乳动物的一种特殊抽象,因为它除了具备哺乳动物的特性外,还具备自己独有的个性;比如它会抓老鼠、抓鱼,这些并不是哺乳动物的共同特性。
当然,在设计类的时候,千万不要为了继承而继承,过多的使用继承会使得整个类层次结构变得十分复杂,使得类与类之间的耦合性变强,所以在使用继承的时候千万要理清对象与对象之间的关系;在没有必要选择继承的情况下推荐使用组装。
当然是否要使用继承,这也得看具体情况,当两个类拥有 ‘is-a’ 的关系,可以使用继承;当两个类拥有 ‘has-a‘ 的关系,可以使用组装。
多态也叫动态绑定,即是系统在运行时会根据对象的运行时类型,从而表现出不同的行为
特点:
与动态绑定相对的则是静态绑定,C语言编程采用的就是静态绑定。静态绑定是在 编译期进行,也就是说,你的程序在编译的时候,他已经对各个方法的调用的地址已经做了绑定,所以在运行的时候,程序会直接根据你的方法地址去调用具体的方法。
而向面向对象编程多态采用的则是动态绑定,那么动态绑定他到底是如何做的呢?程序运行的时候又是如何确定它的运行时类型从而调用对应的方法的呢?
之后再详解。
特点:
如果类中包含抽象方法,那个该类必须要被定义为抽象类
抽象类通常代表一个抽象概念,它提供一个继承的出发点,当设计一个新的抽象类时,一定是要用来继承的,所以,在一个以继承关系形成的等级结构里面,树叶节点应当是具体类,而树枝节点应当是抽象类
特点:
对于初学者来说,很多人在学习的时候,肯定都会有这么一个疑问,接口和抽象类的区别到底是什么,我们在设计程序的时候,什么时候应该用抽象类,什么时候用接口呢?
那么先来说说这两者的使用特点的区别:
那么现在就来说说它们在设计思想上的区别:
也就是说,不论是接口、抽象类、类甚至对象,都是在不同层次、不同角度进行抽象的结果,它们的共性就是抽象。通常抽象类是对目前一类存在共性的子类的一种泛化,通过抽离出子类间的共同属性和行为,从而进行抽象的一种泛化;而接口则是预先定义了一套有关联的行为,至于谁会实现这套行为,开发者自行决定,而我要做的只是告诉接口的实现类你拥有哪些行为而已。
标签:
原文地址:http://www.cnblogs.com/leecong/p/5677388.html