封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。当我们创建一个类的对象后,我们可以通过"对象.属性"的方式,对对象的属性进行赋值。这里,赋值操作要受到属性的数据类型和存储范围的制约。除此之外,没有其他制约条件。但是,在实际问题中,我们往往需要给属性赋值加入额外的限制条件。这个条件就不能在属性声明时体现,我们只能通过方法进行限制条件的添加。比如添加get。Set方法。
同时,我们需要避免用户再使用"对象.属性"的方式对属性进行赋值。则需要将属性声明为私有的(private).此时,针对于属性就体现了封装性。
1.1封装性的体现:
Java提供了4种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在被调用时的可见性的大小。
具体体现:
①我们将类的属性私有化的,同时,提供公共的(public)方法来获取(getXxx)和设置(setXxx)此属性的值
② 不对外暴露的私有的方法
③ 单例模式 ...
封装性的体现,需要权限修饰符来配合。
1.Java规定的4种权限(从小到大排列):private、缺省、protected 、public
2.4种权限可以用来修饰类及类的内部结构:属性、方法、构造器、内部类
- 具体的,4种权限都可以用来修饰类的内部结构:属性、方法、构造器、内部类修饰类的话,只能使用:缺省、public
1.2使用封装的好
-
减少了类与 类之间的耦合
- 类的内部结构可以自由修改
- 封装使得调用者不必关心其内部细节,实现了信息的隐藏
2继承:
减少了类与 类之间的耦合
继承是从已有的类中派生处新的类,新的类能吸收已有类的数据属性和方法,并扩展新的能力,在本质上是特殊一般的关系,即is a的关系,子类继承父类,说明子类是一种特殊的父类,且具有父类不具有的属性和方法。当实现类用extends关键字继承父类后实现类就具有了父类的属性和方法,但是父类中私有的属性和方法就不会被继承。
2.1体现:
1.一旦子类A继承父类B以后,子类A中就获取了父类B中声明的所有的属性和方法,避免了对一些共同特征的重复描述
2 子类继承父类以后,还可以声明自己特有的属性或方法:实现功能的拓展。
2.2继承性的好处:
① 减少了代码的冗余,提高了代码的复用性
② 便于功能的扩展
③ 为之后多态性的使用,提供了前提
2.3Java中关于继承性的规定:
1.一个类可以被多个子类继承。
2.Java中类的单继承性:一个类只能有一个父类
3.子父类是相对的概念。
4.子类直接继承的父类,称为:直接父类。间接继承的父类称为:间接父类
5.子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法
6如果我们没有显式的声明一个类的父类的话,则此类继承于java.lang.Object类
7所有的java类(除java.lang.Object类之外)都直接或间接的继承于java.lang.Object类,意味着,所有的java类具有java.lang.Object类声明的功能。
3.多态:
可以理解为一个事物的多种形态。
对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用),即允许将子类的指针赋予给父类对象。通俗一点就是一个引用变量到底会指向那个类的实例对象,在编译期间是不知道的,在运行期间才知道。
3. 1多态的体现:
1虚拟方法调用
2.有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。
3.2多态性的使用前提:
① 类的继承关系 ② 方法的重写
对象的多态性,只适用于方法,不适用于属性。
4.总结:
面向对象编程是利用类和对象编程的一种思想,万物可归为类,类是对事物的高度抽象,不同的事物之间又有不同的关系。一个类行为和属性与其他类的封装关系;子类与父类的继承关系;一个类和多个类的多态关系,万物皆为对象。



