java语言和C++一样,也有对象和类,也是属于OOP(面向对象程序设计)语言之一,并且JAVA是完全面向对象,这也就是为什么没有指针的原因。
- OOP(Object-oriented programming)和PP(Procedural programming)
Pascal语言的设计者Niklaus Wirth在其著名的《算法+数据结构=程序》(Algorithms + Data Structures = Programs)中明确表述程序员的工作方式,算法是第一位,数据结构是第二位,确定如何操作数据,在决定如何组织数据。
面向过程调换了工作顺序,数据被放在第一位,其次再考虑数据的算法和数据结构。
- 类与对象
- 类:构造对象的模板————生产的机械和模具
- 对象:类的具体体现————生产出来的具体物件
- 实例化:由类构造对象的过程
- 封装:隐藏数据的实现方式 对象的数据为实例域 操作数据的过程为方法 实现封装的关键在于不能让其他类的方法直接访问该类的实例域。封装体现黑盒模型,只需要了解方法,不需要知道盒子的借口功能实现过程。
- 继承:扩展一个类
- 对象行为:
- 对象状态:施加方法,做出什么响应
- 对象的标识:如何判断不同的方法和操作
类之间的关系:
1、依赖("uses-a"):用A类的方法操作B类的对象
2、聚合("has-a"):A类包含B类的对象
3、继承("is-a"):继承方法和对象,下一篇再讲
特别Math类只有类没有对象,只是封装了接口功能。
若使用对象,必须先要构造对象,一般用new新建对象,不用new构造对象只是对象引用,不是完全的对象,不是用构造器构造的对象。必须用构造器构造初始化其对象,或者引用一个已经存在的对象
对象变量并没有实际包含一个对象,仅仅是引用一个对象
构造对象
String s =new Data().toString;
s:对象引用
new Data():才是对象,表示在堆中新建一个Data对象,()表示启用构造器
实例化需要final
再看语句
Vehicle veh1;
veh1 = new Vehicle();
是标准的对象创建,先创建对象引用,将新建的对象引用指向新建的类对象。
Vehicle veh2;
veh2 = veh1
由此可以看出对象引用相当于C++里面的指针此处发生复制行为,但是对象是不可以复制的,被复制的只是对象引用,v2指向v1指向的对象
参考文献:
[1]http://blog.163.com/luyufen_luise/blog/static/5777392520086230367627