面向对象OOP
本章内容
- 面向对象OOP – 思想
- 封装
- 继承
- 多态
- 对象的创建过程
- 面向对象OOP – 编程
1. 面向对象OOP – 思想
1. 面向对象OOP(Object Oriented Programming)
2. 按照我们人类解决问题的惯用方式:是遇到问题,先思考一个解决方案。这个方案是在脑子里,计划蓝图上的,然后再按照蓝图来解决实际问题。可以理解这个蓝图就是解决办法(思想)
3. Java是一门编程语言,它的出现是为了用代码来帮助我们人类,去实际解决一个问题。所以就被聪明的设计者,灌入了人类解决问题的习惯(思想)
4. OOP是Java的核心编程思想,整套Java的精髓就是OOP思想的实现
5. 所以说Java不是枯燥,无规律的代码,而是有思想,有灵魂的语言
2. 封装
封装:核心思想就是“隐藏细节”、“数据安全”:将对象不需要让外界访问的成员变量和方法私有化,只提供符合开发者意愿的公有方法来访问这些数据和逻辑,保证了数据的安全和程序的稳定
实现方法:属性私有化,被private修饰,对外只提供set/get方法
属性私有:
提供set/get方法
3. 继承
父类的延续,子类的更实例,具体化
满足is a关系时 子类继承于父类
书写子类 (关键字extends):
父类定义的属性和方法,可以直接调用
java中4中修饰符分别为public、protect、default、private,他们这就说明了面向对象的封装性,所以我们要适用他们尽可能的让权限降到最低,从而安全性提高。
方法覆盖 Override (重写) 展现子类的多姿多彩
1. 子类中出现和父类中方法声明相同的方法,子类覆盖父类定义的方法
2. 子类对象调用就是子类对象自己的方法,体现了子类的特殊性
3. 前提是 继承
4. 修饰符相同或更宽
5. Java是单继承,多实现(接口)
4. 多态
1. 多态是在继承的基础上实现的,必须有父子类关系
2. 父类引用指向子类对象
3. 如果子类覆盖了父类中的方法,调用子类覆盖后的方法
父类 引用 = new 子类对象
多态的意义:
把不同的子类对象统一的当做父类对象看待,屏蔽子类之间的差异,提高代码的复用性和扩展性
5. 对象的创建过程(JVM)
Student stu = new Student();
1、为父类和子类分配空间
2、递归的构造父类对象,所有实例变量被赋予默认值
3、本类属性初始化,所有实例变量被赋予初始值
4、调用本类中的构造方法,实例变量可以在这里第三次赋值
创建子类对象必须先创建父类对象,在一个对象被创建过程中,实例变量(对象私有变量)通常被赋值了三次。
JVM类加载:是由classLoader和及其子类来实现,是JVM运行时系统组件。它负责在运行时查找和装入类文件的类。
JVM较耗时操作:开辟空间,创建对象,建立/释放JDBC连接,垃圾回收等。
6. 面向对象编程OOP
1. 先有思想,后有JAVA的OOP设计模式,再有OOP编程的实现
2. JAVA语言在设计之初就坚持贯通、执行的OOP思想,所以:
JAVA语言 = OOP思想(灵魂) + 各种变量,语法(骨架)
3. 封装,继承,多态是JAVA面向对象编程的核心部分体现,所以:
不能说OOP就是 封装,继承,多态 就完了
4. 开发一年,二年,三年,五年后再来回味OOP,个中滋味,各种体会