面向对像
设计思路
用一句话概括:“用来表述问题空间概念的对象以及向其发送解决问题的方法的请求。”
因为java不像c那样需要面对“解空间”和“问题空间”,java只需要面对“问题空间”,以问题解决问题。
对象是服务的提供者。
万物皆对象
你可以将问题的所有组成抽取出来,作为程序中的对象。e.g 猪,牛,羊,汽车等
程序是对象的集合。
对象也可视为特殊的变量。他是可以进行数据的存储的。
这里我们就要提到一个java很方便的地方,垃圾回收器。我们new 的对象。不用我们去判断什么时候干掉他。
她会帮我们自动判断。这就有效避免了内存溢出。
类型
类型类型,就是类的型。一个类就是一个数据类型。
类描述了具有相同特性和行为的对象的集合。
对象的引用与对象
Role role = new Role();
User user = new User();
role为对象引用,new Role 为new 一个对象,这个对象储存在heap segment(堆)里。()为在对象创建后,立刻调用构造方法对刚生成的对象进行初始化。
所以 role = user; 的意识是使role指向user所指向的对象。
JVM的内存
一共有四个部分:
stack segment heap segment code segment data segment
申明一个局部变量,存放在 stack segment
new 一个对象,存放在heap segment
static变量和字符串常量,存放在data segment
类中的方法,存放在code segment
访问控制
三个关键字:public,private,protected。但还有一个默认访问权限。在未使用关键字指定权限时,默认为包访问权限。
public: 所有人。
private: 类创建者和 类里的方法。
protected: private的权限加上继承的类
包访问权限: 顾名思义,以包为单位,同包可访。
防止客户端程序员修改代码,所以要private.