对象和类:
使用一个通用类来定义同一类型的对象.
使用构造方法构造对象
构造方法的特殊之处
1. 构造方法必须和所在类名字相同
2. 构造方法没有返回值类型
3. 构造方法是在创建一个对象时有 new 操作符调用的. 构造方法的作用是初始化对象.
如果用户没有定义构造方法, 类会隐式定义一个方法体为空的无参构造方法, 被称为默认构造方法, 当且仅当类中没有明确定义任何构造方法是才会自动提供.
通过引用变量访问对象
对象是通过对象引用变量 (reference variable) 来访问的, 该变量包含了对对象的引用.
类是程序员定义的类型. 类是一种引用类型(reference type), 这意味着该类类型的变量都可以引用该类的一个实例.
在 Java 中, 数组被看作对象. 一个数组变量实际上是一个包含数组引用的变量.
在面向对象编程中, 对象成员指该对象的数据域和方法. 对象的数据访问和方法调用可以通过点操作符 ( . ) 来进行.( . )操作符也称为对象成员访问操作符(object member access operator).
例: myCircle.radius 引用 myCircle 的半径
myCircle.getArea()调用 myCircle 的 getArea 方法.
方法作为对象的操作被调用
数据域 radius 称为实例变量(instance variable), 因为它依赖某个具体的实例.
getArea 方法称为实例方法(instance method), 因为只能在具体的实例上调用它. 是非静态的方法.
实例方法被调用的对象称为调用对象(calling object).
通常, 我们创建一个对象, 然后将它赋值给一个变量, 之后就可以使用这个变量来引用对象.
有时候, 对象在创建之后并不需要引用. 在这种情况下, 可以创建一个对象, 而并不将它明确的赋值给一个变量, 如:
new Circle(); 创建一个 Circle 对象
或者
System.out.println("Area is" + new Circle(7).getArea()); 创建一个 Circle 对象然后调用它的 getArea()方法返回其面积. 这种方式创建的对象称为匿名对象(anonymous object).
引用数据域和 null 值
数据域也可以是引用型的.
String 是一个预定义的 Java 类
如果一个引用类型的数据域没有引用任何对象, 那么这个数据域既要有一个特殊的 Java 值 null.
引用型数据域的默认值是 null
数值类型数据域的默认值是 0
boolean 类型数据的默认值是 false
char 类型数据域的默认值是'\u0000'
Java 没有给方法中的局部变量赋默认值
基本类型变量和引用类型变量的区别
每一个变量都代表了一个保存了存储值的内存位置. 声明一个变量时, 就是在告诉编译器这个变量可以存放什么类型的值.
对基本类型变量来说, 对应内存所存储的值是基本类型值.
对引用类型变量来说, 对应内存所存储的值是一个引用, 是对象的存储地址.
静态变量, 常量和方法
静态变量被类中的所有对象共享.
静态方法不能访问类中的实例成员(即实例数据域和方法).
如果想让一个类的所欲实例共享数据, 就要使用静态变量(static variable), 也称为类变量(class variable).
静态变量将变量值存储在一个公共的内存地址. 如果某一个对象修改了静态变量的值, 那么同一个类的所有对象都会收到影响.
Java 支持静态变量和静态方法. 无需创建类的实例就可以调用静态方法.
实例方法和实例数据都是从属于实例的, 所以在实例创建之后才可以使用, 通过引用变量来访问.
如果一个变量或方法依赖于类的某个具体实例, 就应定义为实例变量或实例方法.
如果一个变量或方法不依赖于类的某个具体实例, 就应定义为实例变量或实例方法
可见性修饰符
如果没有使用可见性修饰符, 那么默认类, 方法和数据域是可以被同一个包中的任何一个类访问的. 称为包私有 (package-private) 或包访问(package-access).
修饰符 private 只能应用在类的成员上..
修饰符 public 可以应用在类或类的成员上.
数据域封装
为避免对数据域的直接修改, 应使用 private 修饰符将数据域声明为私有的, 称为数据域封装(data field encapsulation).
私有数据域不能被对象从定义该私有域的类外访问.
为了访问私有数据域, 可以提供一个获取方法 (getter) 返回数据域的值, 获取方法称为访问器(accessor).
为了更新数据域, 可以提供一个设置 (setter) 方法更新数据域的值, 设置方法称为修改器(mutator).
向方法传递对象参数
给方法传递一个对象, 是将对象的引用传递给方法.
Java 只有一种参数传递方式: 值传递(pass-by-value).
对象存储在堆中.
当传递基本数据类型的参数时, 传递的时实参的值.
当传递引用类型的参数时, 传递的时对象的引用.
引用上的按值传参在语义上最好描述为按共享传参(pass-by-sharing), 即在方法中引用的对象和传递的对象是一样的.
对象数组
对象的数组实际上是引用变量的数组.
当使用 new 操作符创建对象数组后, 这个数组中的每个元素都是默认值为 null 的引用变量.
来源: http://www.bubuko.com/infodetail-3028369.html