1.封装性
面向对象的第一个原则是把数据和对该数据的操作都封装到一个类中,类的概念和现实世界的“事务种类”是一致的。
如电视机就是一个类,每台电视机都有尺寸、品牌,这些性能被封装成类的属性,每台电视机都可以开关电视、播放电视节目,这些行为动作被封装成类的方法。
对象是类的一个实例化结果,对象具有类所描述的所有属性及方法,是具体的。
每个对象都属于某个类,面向对象程序设计就是设计好相关的类,类中有属性和方法。
封装是为了继承
2.继承性
继承是在类、子类以及对象之间自动地共享属性和方法的机制。
类的上层可以有父类,下层可以有子类,形成一种层次结构。
一个类将直接继承其父类的属性和方法,而且继承还具有传递性,因此,它还将间接继承所有祖先类的属性和方法。
继承最重要的有点是复用性,在继承已有类的基础上加以改写,进而功能得到不断扩充,这样既可以得到程序共享的好处,又可以,提高软件开发的效率。
继承是为了多态
3.多态性
多态是指在表示特定功能时,有多种不同的形态或实现方法。
常见的多态形式有以下两种:
(1)方法重载。(overlord)(重写)
即在同一个类中,相同名称的方法有多种形态。
遵循两同两小一大原则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。
好处:提供方法的多种使用形式,方便调用。
####(2)方法覆盖。(override)
对于父类的某个方法,在子类中重新定义一个相同形态()的方法,这样,在子类中将覆盖从父类继承来的那个方法。
遵循一同一大两小原则:
一同:方法签名必须相同。
方法签名 = 方法名称 + 参数列表,参数列表 = 参数个数 + 参数类型 + 参数顺序。
也就是说,方法名称,参数个数,参数类型,参数顺序必须都相同。
一大:子类方法的访问权限大于等于父类方法的访问权限。
两小:子类方法的返回值类型小于等于父类方法的返回值类型,子类方法声明抛出的异常小于等于父类方法声明抛出的异常。
好处:以相同的方式对待不同的对象,不同的对象可以用各自的方式响应同一消息。
运行时多态:通过父类定义的变量可引用子类的对象,执行对象方法时则表现出每个子类对象各自的行为。
4.抽象性
两层含义,(1)体现在类的层次设计中,高层类是底层类的抽象描述。
(2)体现在类与对象之间的关系上,类是一个抽象的概念,而对象是具体的。