一.学习概要
1.代码级别,OO语法的学习:
- 内容多
- 细节强
- 略为枯燥
2.领会OO思想
- 通过OO语法引出OO思想
- 在项目中使用以达到熟练
二.结构化编程和面向对象编程
1.结构化编程
在程序设计的早期,程序用流程图和自顶向下的方法设计。将一个大的问题分解成更小的任务,然后为每一个任务编写一个过程。这种类型的程序设计被称为结构化编程。
2.面向对象编程
- 20世纪70年代以后,面向对象编程开始流行。程序不是围绕着需要解决的任务来设计,而是围绕着解决问题中的对象来设计。
- 建立对象模型,将问题域华为不同的对象去处理。
3.区别
- 在结构化编程中,程序围绕着要解决的任务来设计。
- 面向对象编程中,程序围绕着要解决问题域的对象来设计。
这两种思想没有对错,只有适不适合。
五星原则:开闭原则。一个好的设计可以任意地扩展但是不能对已有代码修改。
三.面向对象的解决方案
1.对象=属性+行为。属性是名词,行为是动词。只要具体存在的就是对象。
万物皆对象,对象应关注而产生。
四.什么是类和对象
具有相同属性和行为的对象的类型
1.类和对象的关系
类是对象的抽象,对象是类的实例
问题域-》对象-》类型
2.细节
- 当类是public的时候,类名和文件名必须保持一致。
- 并不是一个java文件编译出一个.class文件,而是一个类编译出一个.class文件。class文件的名字与类名保持一致。
- 属性可以不赋初值,因为在new 对象的时候会自动将属性初始化。整型:0;实型:0.0;布尔型:false;引用:null;char:ASCII码为0的不可见字符。
- 与局部变量或常量不同,属性拥有访问修饰符,就算不写也有默认的。public,protected,默认,private。
private代表只能在本类中进行访问。
5.如果外部需要操作私有属性,应该提供公共的访问器与修改器(一组特殊的方法get/set)。
3.JavaBean规范
必须为私有属性提供符合命名规范的set/get方法
4.隐式对象
this(当前对象),大部分情况下this可以省略。
哪个对象调用方法,this指代哪个对象
String name;
public void setName(String name){
this.name=name;
}
5.建议:只要操作本类的属性调用本类的方法,加上this。
好处:
1. this有联想功能。
2. 对代码整体的把握更方便。
tips:如果属性中有布尔类型的,生成了set方法的话,要将isXXX()改为getXXX().
五.封装
1.类的组装
确认有哪些类,类由哪些属性和行为组成。
2.信息隐藏
- 访问修饰符
- 方法的实现(调用者不必要关心方法的具体实现)
六.对象的销毁
- 产生了对象,用完以后,自然要关心他的销毁。
- 如果一个对象没有任何引用,那么就具备了垃圾回收机制(GC)回收的条件。
- 主动通知GC回收对象,对象=null
总结:引用计数,当指向对象的引用个数为0的时候,对象会被回收。
4.System.gc(),本方法只能通知GC。
七.访问对象的属性和方法
- 通过new关键字产生兑现,通过.调用方法和访问属性。
- this,当前类对象的引用。
八.使用包来组织
- 在项目开发中,我们通常会编写数目众多的类。如果不对这些类进行分门别类的存放和使用,就像我们不使用文件夹去管理众多的文件一样,在使用时会很困难和不方便,也会容易出现类的命名冲突问题。
- Java通过引入包的机制解决这些问题。
- 使用同一个包中的其他类可以不用import
- java.lang包中的类是被自动加载的,而不需要import。