面向对象的三大特征
一.封装
JAVA语言的封装是将对象的某些属性封装到类中,隐藏对象的细节部分.使得外部不能直接访问,同时提供相应的方法供类对象来使用.大大提高了数据的安全性并且方便对程序修改和维护.
封装的应用:
JavaBean实现的就是封装技术.前一篇博文描述了JavaBean是如何实现的.
一个标准类(javaBean)
JAVA中的内部类也是封装的应用.
二.继承
1.继承的概念
继承就是子类继承父类的属性和行为,JAVA中的继承就是建立分等级层次的类,将具有相同特征的属性和行为,写成父类;然后使用子类继承父类的属性和方法,同时子类还可以拥有自己的属性和方法.
2.继承的好处
1)继承机制减少了代码量,增强了代码复用率.
2)提高代码的维护性
3)多态的前提条件之一
3.继承的弊端
1)增加了程序的耦合性,也就是增加了类的数量.
4.继承中的成员变量冲突问题
当父类的成员变量名字与子类的成员变量名相同时,会发生冲突问题
成员变量的访问顺序是:
1)子类的局部位置
2)子类的成员位置
3)父类的成员位置
4)报错
在继承中访问成员变量时,遵循就近原则:
按照上面所示的顺序选择选择最近的位置访问.
5.继承中的关键字this super
this 和super是相对于对象存在的,在静态方法中不存在;
this表示当前对象的堆地址
-
this.变量名(方法名()) 表示调用当前方法的对象的变量或方法
-
this(); 表示调用当前方法的对象的无参构造方法
-
this(a);表调用当前方法的对象的有参构造犯法
super表示当前对象的父类的一个引用
-
super变量名(方法名()) 表示调用当前方法的对象的父类对象变量或方法
-
super(); 表示调用当前方法的对象的父类对象无参构造方法
-
super(a);表调用当前方法的对象的父类对象有参构造犯法
6.继承中构造方法与代码块的执行顺序
7.方法重载与方法重写的区别
8.继承中的注意事项
- JAVA中一个类只能继承一个父类,但是可以多层次继承.
- 子类可以继承父类的非私有的属性和方法.即非private修饰
- JAVA中所有类的超类是Object,称为上帝类
- 子类不能继承父类的构造方法,但是可以通过super关键字来访问.
- 在创建子类对象时,会调用父类的构造方法,如果被调用的父类构造方法不存在,会报错.
- 子类可以重写父类的方法,但是访问权限不能小于父类方法的访问权限.
三.多态
1. 多态的概念
多态是一个事物在不同时刻的不同体现.JAVA中的多态是在继承关系的类中,或是在接口与子实现类中,通过前提条件来灵活的调用子类方法的一种方式.
2.多态的前提
- 1.继承关系
2.方法重写
3.向上转型(父类引用指向子类对象)
父类名 对象名 = new 子类名();
3.多态的好处
- 由于继承关系中,可以提高代码的复用性.
- 提高方法调用的灵活性
4.多态的弊端
- 不能访问子类的特有功能
当需要访问子类的特有方法或属性时,要通过向下转型,
子类名 子类对象名 = (子类名)父类的引用; - 注意:在类型转换时如果转换两个没有关系的类,会抛出类转换异常:java.lang.ClassCastException:
5.多态的成员访问特点
-
父类名 对象名 = new 子类名();
-
构造方法:分层初始化
-
成员变量:编译看左,运行看左;
注意:子类成员变量与父类重名时,访问的始终是父类的成员变量
-
静态的成员方法:编译看左,运行看左
-
子类继承的成员方法:编译看左,运行看左
-
子类重写的成员方法:编译看左,运行看右
总结:只有当子类重写了父类的方法时,才可以通过多态访问子类方法!