*面向对象编程主要体现下列三个特性(若有四个的话可以加一个抽象性):
- 封装:面向对象的编程的核心思想之一是将数据和对数据的操作封装在一起。即从具体的实例中抽取出共同的性质形成一般的概念。
- 继承:体现了一种先进的编程模式(子类可以继承父类的属性和行为,即继承父类所具有的数据和数据上的操作,同时又可以则改天子类独有的数据和数据上的操作)
- 多态:有两种意义上的多态。一种是操作名称的多态,即多个操作有相同的名字,但这些操作所接受的消息类型必须不同。另外一种是和继承有关的多态,是指同一个操作被不同类型的对象调用时可能产生不同的行为。
目录
总结封装性:Java提供了4种权限修饰符,来修饰类以及类的内部结构,体现类及类的内部结构在被调用时的可见性的大小
一、封装与隐藏(封装性)
隐藏对象的内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。即,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的思想 。
1、问题的引入:
当我们创建一个类的对象以后,我们可以通过“对象.属性”进行赋值操作。赋值操作要受到该属性的数据类型和存储范围的制约,除此之外没有其他条件。但是在实际生活中,我们需要给属性加上额外的限制条件。这个调价你局不能再属性声明时体现,我们只能通过方法进行条件的添加。同时我们还需要避免用户再使用“对象.属性”的方式进行赋值,则需要将属性声明为private。--->体现了封装性
2、封装性的体现:
例如:
2.2:将类的属性XXX私有化(private),同时提供公共(public)的方法来获取(getXXX)和设置(setXXX)此属性的值。
2.2:不对外暴露的私有的方法
2.3:单例模式
3、封装性的体现需要权限修饰符来配合
3.1:Java规定的4种权限(从小到大排列):private、缺省(default)、protected、public
3.2:4种调用权限
3.3:4种权限可以用来修饰类及类的内部结构:属性、方法、构造器、内部类。
3.4:对于class的权限修饰只能用public和缺省。
总结封装性:Java提供了4种权限修饰符,来修饰类以及类的内部结构,体现类及类的内部结构在被调用时的可见性的大小
二、继承性
1、继承性的好处
1.1、减少了代码的冗余,提高了代码的复用性
1.2、便于功能的扩展
1.3、为之后多态性的使用提供了前提
2、继承性的格式:
class A extends B{ };
则A为子类(派生类)、subclass B为父类、超类、基类、superclass
2.1 、体现:一旦子类A继承了父类B以后,子类A中就获取了父类中声明的结构(属性、方法)。特别的:父类中声明为private的属性或方法,子类继承父类以后仍然获取了父类的私有结构,只是因为封装性的影响,使得子类不能直接调用父类的结构。
2.2 、子类在继承了父类之后还可以声明自己特有的属性和方法,以实现功能的扩展。
3、Java中关于继承性的一些规定
3.1 、一个类可以被多个子类继承
3.2 、一个类只能有一个父类(类的单继承性)
3.3 、子父类是相对的概念
3.4 、子类直接继承的父类叫直接父类,间接继承的类叫间接父类
3.5 、子类继承父类以后,就获取了直接父类及间接父类所有声明的所有方法、属性。
4、Object类
4.1、如果我们没有显式的声明一个类的父类的话,则此类继承于java.lang.Object类
4.2 、所有的java类(除java.lang.Object类)都直接或间接继承java.lang.Object类
三、多态性
1、对多态性的理解:
可以理解为一个事物的多种形态。
2、何为多态性:
对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)
>当我们调用子父类同名同参数的方法时,实际执行的是子类重写父类的方法———虚拟方法调用
3、多态的使用(虚拟方法的调用):
有了对象的多态性之后,我们在编译期,只能调用父类中声明的方法,但是在执行期我们实际执行的是子类重写父类的方法。
>对象的多态性只适用于方法,不适用于属性(都看父类)
>子类中定义了与父类同名同参数的方法,在多态情况下,将父类的方法成为虚拟方法。
>多态性使用是运行时行为。
4、多态性的使用前提:
4.1、要有类的继承关系
4.2、要有方法的重写