黑马程序员——Java面向对象封装继承多态
2015-07-28 22:12
821 查看
Java之类的封装,继承,多态
类的封装
将对象的状态信息隐藏在对象内部,不允许外部程序直接访问部信息,而是通过该类所提供的方法来实
现对内部信息的操作和访问。封装是通过设置访问控制符实现的,他们的访问控制如下:
封装的目的
1.隐藏类的实现细节
2.让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对Field的不合
理访问。
3.可进行数据检查,从而有利于保证对象信息的完整性。
4.便于修改,提高代码的可维护性。
封装的设计基本原则
1.类里的绝大部分Field都应该使用private修饰,只有一些static修饰的,类似全局变量的Field才考虑使用
public修饰。除此之外,有些函数只是用于铺助实现该类的其他函数,这些函数被称为工具方法,也应
该使用private修饰。
2.如果某个类主要用作其他类的父类,该类里包含的大部分方法可能仅希望被其子类重写,而不想被外界
直接调用,则应该使用protected修饰这些方法。
3.希望暴露出来给其他类自由调用的方法应该使用public修饰。因此,类的构造器通过使用public修饰,从
而允许在其他地方创建该类的实例。因此外部类通常都希望被其他类自由使用,所以大部分外部类都使
用public修饰
例
类的继承
Java类中只有一个直接父类,没有多继承
类方法重写
子类包含与父类同名函数的现象被称为函数重写,也称覆盖。
Super限定
super限定用来在子类函数中调用父类被覆盖的实例函数。
子类构造器调用父类构造器的几个情况
1.子类构造器执行体的第一行使用super显式调用父类构造器,系统将根据super调用传入的实参列表调用父类
构造器
2.子类构造器执行体的第一行代码使用this显式调用本类中重载的构造器,系统将根据this调用里传入的实参列表
调用本类中的另一个构造器。执行本类中另一个构造器时即会调用父类构造器。
3.子类构造器执行体中既没有this,也没有super,系统将会执行子类构造器之前,隐式调用父类无参数的构造
器。
例如
类的多态
相同类型的变量,调用同一个方法时呈现出多种不同的行为特征,称之为多态。
引用变量的两个类型
编译时类型:由声明该变量时使用的类型决定。
运行时类型:由实际赋给该变量的对象决定。
多态的产生
当编译时类型和运行时类型不一致时,则产生了多态。
例如:
从设计上看面向对象的三大特性
1.继承是为了对物的信息进行抽象
2.多态是为了对物的行为进行抽象
3.封装是为了对物与外界交流进行抽象
类的封装
将对象的状态信息隐藏在对象内部,不允许外部程序直接访问部信息,而是通过该类所提供的方法来实
现对内部信息的操作和访问。封装是通过设置访问控制符实现的,他们的访问控制如下:
private | default | portected | public | |
---|---|---|---|---|
同一个类中 | √ | √ | √ | √ |
同一个包中 | √ | √ | √ | |
子类中 | √ | √ | ||
全局范围内 | √ |
1.隐藏类的实现细节
2.让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对Field的不合
理访问。
3.可进行数据检查,从而有利于保证对象信息的完整性。
4.便于修改,提高代码的可维护性。
封装的设计基本原则
1.类里的绝大部分Field都应该使用private修饰,只有一些static修饰的,类似全局变量的Field才考虑使用
public修饰。除此之外,有些函数只是用于铺助实现该类的其他函数,这些函数被称为工具方法,也应
该使用private修饰。
2.如果某个类主要用作其他类的父类,该类里包含的大部分方法可能仅希望被其子类重写,而不想被外界
直接调用,则应该使用protected修饰这些方法。
3.希望暴露出来给其他类自由调用的方法应该使用public修饰。因此,类的构造器通过使用public修饰,从
而允许在其他地方创建该类的实例。因此外部类通常都希望被其他类自由使用,所以大部分外部类都使
用public修饰
例
类的继承
Java类中只有一个直接父类,没有多继承
类方法重写
子类包含与父类同名函数的现象被称为函数重写,也称覆盖。
Super限定
super限定用来在子类函数中调用父类被覆盖的实例函数。
子类构造器调用父类构造器的几个情况
1.子类构造器执行体的第一行使用super显式调用父类构造器,系统将根据super调用传入的实参列表调用父类
构造器
2.子类构造器执行体的第一行代码使用this显式调用本类中重载的构造器,系统将根据this调用里传入的实参列表
调用本类中的另一个构造器。执行本类中另一个构造器时即会调用父类构造器。
3.子类构造器执行体中既没有this,也没有super,系统将会执行子类构造器之前,隐式调用父类无参数的构造
器。
例如
类的多态
相同类型的变量,调用同一个方法时呈现出多种不同的行为特征,称之为多态。
引用变量的两个类型
编译时类型:由声明该变量时使用的类型决定。
运行时类型:由实际赋给该变量的对象决定。
多态的产生
当编译时类型和运行时类型不一致时,则产生了多态。
例如:
从设计上看面向对象的三大特性
1.继承是为了对物的信息进行抽象
2.多态是为了对物的行为进行抽象
3.封装是为了对物与外界交流进行抽象
相关文章推荐
- 黑马程序员——高新技术---Java基础-多线程2
- 黑马程序员——高新技术---Java基础-多线程1
- 默齐致知电话面试
- 黑马程序员——Java学习总结:Java编程基础
- iOS面试笔试汇总
- 黑马程序员——高新技术---Java基础-IO流
- 黑马程序员--iOS--C基础(程序结构)
- 面试题_28——字符串的全排列
- 黑马程序员——高新技术---Java基础-IO流_File类,递归思想
- 黑马程序员------OC 面向对象和面向过程思想(基础)
- 黑马程序员——高新技术---Java基础-set接口,Map接口
- 剑指offer_面试题7_用两个栈实现队列(让我熟悉了类模板的使用)
- 面试题27_二叉搜索树与双向链表
- 笔试/面试题记录
- 阿里面试总结
- 剑指offer面试题11——数值的整数次方
- 面试题26_带随机指针的链表复制
- 【面试加分项】java异常处理之try_catch_finally
- 每个程序员需掌握的20个代码命名小贴士
- 黑马程序员——泛型