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