对象与类
类是所有面向对象的语言的共同特征,所有面向对象的语言都提供了这种类型。类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。对象是具有类类型的变量。类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。
面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。这些程序设计语言可以归纳为以下几类:系统中一切事物皆为对象;对象是属性及其操作的封装体;对象可按其性质划分为类,对象成为类的实例;实例关系和继承关系是对象之间的静态关系;消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式;方法是消息的序列。
一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。在java中,任何对象变量的值都是对存储在另外一个地方的一个对象的引用。new操作符的返回值也是一个引用。
之前的类一直都包含了简单的main方法,而JavaEE程序设计大多数类是没有main方法,这些类有自己的实例域和实例方法,一个完整的Java程序是由若干类组合在一起,其中只有一个类由main方法。
1.静态域:
如果将域定于为static,那么每个类中只有一个这样的域
而每个对象对于所有的实例域却都有自己的一份拷贝
也就是说,它属于类,而不属于任何独立的对象
静态域被称为类域
2.静态常量:
改变静态常量:通过本地方法可以绕过Java语言的存储控制机制
3.静态方法:
静态方法是一种不能向对象实施操作的方法
也就是没有隐式的参数
可以认为静态方法是没有this参数的方法
静态方法可以访问自身类中的静态域,该方法也可以省略关键字static
3.1使用静态域有两种情况:
一个方法不需要访问对象状态,其所需参数都是通过显示参数提供
一个方法只需要访问类的静态域
4.工厂方法:
通过静态工厂方法来构造对象
Java程序设计语言总是采用按值传递,也就是说,方法得到的是所有参数值的一个拷贝。
1.方法不能修改一个基本数据类型的参数(数值型或布尔型)
2.方法可以改变一个对象参数的状态,方法得到的是对象引用的拷贝,不是对象的拷贝,对象引用及其他拷贝同时引用同一个对象。