- 类是对象的模板。它定义对象的属性,并提供用于以创建对象的构造方法以及操作对象的普通方法。
对 象 和 类 305
2.类也是一种数据类型。可以用它声明对象引用变量。对象引用变童中似乎存放了一个对象,但事实
上,它包含的只是对该对象的引用。严格地讲,对象引用变量和对象是不同的,但是大多数情况下,
它们的区别是可以忽略的。
3.对象是类的实例。可以使用 new 操作符创建对象,使用点搡作符( .)通过对象的引用变量来访问该
对象的成员。
4.实例变量或方法属于类的一个实例。它的使用与各自的实例相关联。静态变量是被同一个类的所有
实例所共享的。可以在不使用实例的情况下调用静态方法。
5.类的每个实例都能访问这个类的静态变量和静态方法。然而,为淸晰起见,最好使用 “类名 .变量” 和 “类名 .方法" 来调用静态变量和静态方法。
6.可见性修饰符指定类、方法和数据是如何被访问的。公共的( public)类、方法或数据可以被任何
客户访问,私有的(private)方法或数据只能在本类中被访问。
类命名要开头大写,java是一个区分大小写的语言
package shuaiGePackge;
class Person{
String name;
int id;
void print() {
System.out.println("jianglongjie henshuai!!");
}
void introduce () {
System.out.println("name:"+name+" id:"+id);
}
}
public class demo1 {
public static void main(String[] args) {
person p = new person();
p.id = 1;
p.name = "jlj";
p.print();
p.introduce();
}
}
this 关键字
关键字 this 引用对象自身。它也可以在构造方法内部用于调用同一个类的其
他构造方法。
关键字 this 是指向调用对象本身的引用名。可以用 this 关键字引用对象的实例成员。
例如,下面 a 的代码使用 this 来显式地引用对象的 radius以及调用它的 getAreaO 方法。
this引用通常是省略掉的,如 b 所示。然而,在引用隐藏数据域以及调用一个重载的构造
方法的时候,this 引用是必须的。
使用 this 引用隐藏数据域
使用 this 调用构造方法
package this关键字的使用;
class person{
int age;
int sex;
String name;
person(int newage, int newsex , String newname){
age = newage;
sex = newsex;
name = newname;
System.out.println("构造方法1被调用");
}
void introduce () {
person tmp = this;
System.out.println("tmp name:"+tmp.name);
System.out.println("this used\n");
System.out.println("age:"+this.age);
System.out.println("sex:"+this.sex);
System.out.println("name:"+this.name);
}
}
public class demo1 {
public static void main(String[] args) {
person p =new person(1,1,"shuai");
p.introduce();
}
}
static 关键字
静态变量被类中的所有对象所共享。静态方法不能访问类中的实例成员。
如果想让一个类的所有实例共享数据,就要使用静态变量(static variable), 也称为类变
量( class variable)。静态变量将变量值存储在一个公共的内存地址。因为它是公共的地址,
所以如果某一个对象修改了静态变量的值,那么同一个类的所有对象都会受到影响。Java 支
持静态方法和静态变童,无须创建类的实例就可以调用静态方法(static method)。
package static关键字的使用;
class person{
static int age;
int sex;
String name;
person(int newage, int newsex , String newname){
age = newage;
sex = newsex;
name = newname;
System.out.println("构造方法1被调用");
}
static {
System.out.println("静态代码块");
age = 100;
}
/*static void introduce() {
System.out.println(this.sex); //静态代码块里面不能有 this关键字
}*/
static void introduce() {
System.out.println(age); //可以访问静态成员
}
}
public class demo {
public static void main(String[] args) {
person p = new person(1,1,"shuai");
person.age =100;
System.out.println("1+2:"+add(1,2));
}
static int add(int a ,int b) {
return a+b;
}
}
数据域封装:将數据域设为私有保护數据,并且使类易于维护。
数据域封装的优点是什么?
为了避免对数据域的直接修改,应该使用 Private 修饰符将数据域声明为私有的,这称
为數据域封装(data fie丨d encapsulation)。
什么是访问器方法?什么是修改器方法?访问器方法和修改器方法的命名习惯是什么?
为了能够访问私有数据域,可以提供一个 get 方法返回数据域的
值。为了能够更新一个数据域,可以提供一个 set 方法给数据域设置新值。get 方法也被称
为访问器(accessor), 而 set 方法称为修改器(mutator)。
要使一个类成为不可变的,它必须满足下面的要求:
所有数据域都是私有的。
没有修改器方法。
没有一个返回指向可变数据域的引用的访问器方法