不用说-_-||,各位想必都知道Java的三大特性。封装,继承,多态。
-
三大特性的概念
-
封装
封装的概念很直白,封装。到底指的是什么呢?顾名思义。封装即指将类的方法,变量封装,不允许外来成员直接访问该类的对象。只能通过该类去对类的方法和对象进行操作。
类似于一个盒子,盒子有4层,最上层或者说表层就是可以被公开的方法,盒子向内一层则其访问权限在不断增加。
表层或者说第一层可以被所有人拿到盒子内的资源。
第二层则只有和我在一个单位的成员才能拿到。
第三层则是只有我带的徒弟或者学生才能拿到。
第四层只有我自己才能拿到。 -
关键字
java一般有4个关键字。public,default,protect,private。4个关键字分别对应了不同的封装程度。
public(公有的),很明显,public修饰的方法和对象,是被公开的,其他类在New一个该对象并使用时,就可以看到这些被公开的方法,只要使用该类去调用该实例方法,就能执行相应的操作。public关键字非常重要,很多时候都需要使用公共方法来获取该类的其他对象,如果没有公有属性,但非要取得它的属性,只能通过反射来获取,而这加大了复杂度。
default(默认的),默认修饰符只在当前类所在包可见。该包内的其他类可以看到被default修饰的对象。
protect(被保护的),protect修饰符的权限比较严格,只有该类的子类才能看到被protect修饰的对象。这个意义上,也可以说内部类是该类的子类。
private(私有的),private修饰符权限最为严格,只有该类可以访问。不对其他类开放,只能通过该类定义的其他的看到的方法去间接调用。 -
继承
说到继承,可能不可避免的想到什么子女继承父母财产之类的。
在Java中,也可以说是在面向对象中吧,对于继承来说,它就像是继承了父亲可以留给他的资产。除了private修饰的对象外,其他对象都可以通过子类对象去对进行操作。因为private是私有的,不对任何人开放,谁还没点小秘密呢,是吧?
Java抛弃了C++难以理解的多继承概念,转而实现单继承(可多层次继承,有点像传家宝的感觉了),多实现。多实现又和接口相关,这里并不赘述。通过继承来实现父类方法子类扩展,在子类中可以重写父类的方法,不然默认保持父类原有方法体。 -
多态
多态的概念可涉及的比较广泛,多态顾名思义,一个事物存在多种状态。最典型的就是方法重载。更具体一点说,最典型的就是构造函数重载。通过注入不同的参数,实现构造不同的对象,该对象的成员属性可通过构造函数来注入。Java中构造函数和类同名,但是参数却不一定相同,一个类中可同时存在多个构造函数,当没有构造函数时要New该类时,默认存在一个无参构造函数并使用。
这里我们可以看出,多个构造函数它们的名字相同,但由于参数不同,从而导致它们不是一个方法。对于重载,主要就是为了解决方法过多的问题,有些具有相同功能的方法完全没必要再去生成一个名字不同的对象,这加大了写代码时的复杂度。而重载,又是多态的一个具象实现,我们就可以得出多态是一个事物可以在不同的条件下表现出不同的功能。