一、类
1.1 类定义与格式
// 创建类
class ClassName{
field;//成员属性
method;//成员方法
}
class为定义类的关键字,ClassName为类的名字,{}为类的主体。
类中包含的内容称为类的成员。
举例:
class Person {
public int age;//成员属性
public String name;
public String sex;
public void eat() {//成员方法
System.out.println("吃饭!");
}
public void sleep() {
System.out.println("睡觉");
}
}
1.2 类的实例化
类相当于一张图纸,对象则是按照此张图纸创建出来的每一个个体产品,而按照图纸生产实际产品的这个过程(即用类类型创建对象的过程,称为类的实例化),使用new关键字来进行实例化操作。
Class Person{
public int age;//成员属性 实例变量
public String name;
public String sex;
public void eat(){//成员方法
System.out.println("吃饭");
}
public void sleep(){
System.out,println("睡觉");
}
public class Main{
public static void main(String[] args){
Person person = new Person();//通过new实例化对象
person.eat();//成员方法调用需要通过对象的引用调用
person.sleep();
//可产生多个实例化对象
Person person2 = new Person();
Person person3 = new Person();
}
}
//输出结果
//吃饭
// 睡觉
注意:
(1)new关键字用于创建一个对象的实例;
(2)使用" . "来访问对象中的属性和方法;
(3)同一个类可以创建多个实例;
(4)类只是一个模型一样的东西,用来对实体进行描述,限定了类有哪些成员;
(5)类是一种自定义的类型,可以用来定义变量,但是在java中用类定义出来的变量我们称其为对象;
(6)实例化出来的对象占用实际的物理空间,存储类成员变量。(类是图纸,也需要占据内存空间)
2. 方法
2.1 方法的定义
用来描述一个对象的行为
public static 方法返回值类型 方法名称(形参列表){
方法的指令;
return 返回值;
}
class Person{
public int age = 18;
public String name = "不高兴";
public void show(){
System.out.println("我叫" + name + ", 今年" + age + "岁");
}
}
class Text {
public static void main(String[] args){
Person person = new Person();
person.show();
}
}
//执行结果
我叫 不高兴
此处的show方法,表示Person这个对象具有一个“展示自我”的行为,这样的show方法是和person实例相关联的。如果创建了其他实例,那么show的行为就会发生变化
Person person2 =new Person();
person2.age=77;
person2.name="阿拉蕾";
person2.show();
此时执行的结果为“我叫阿拉蕾,今年77岁”。
2.2 构造方法(特殊的方法)
在实例化对象的时候会被自动调用的方法,方法的名字和类名相同,用于对象的初始化。
构造方法的特点:
(1)构造方法的名称必须与类名称相同;
(2)构造方法不需要写返回值类型,内部也不必写return语句;
(3)构造方法不需要显示调用,而是在new的时候自动被调用;
(4)构造方法也支持重载,重载规则和普通方法一样。
二、关键字
2.1 static关键字
若某个类中的某个成员加上了static,说明这个成员是一个类属性/类方法,若没有static,则成员是一个实例属性/实例方法
a.修饰属性
Java静态属性和类相关, 和具体的实例无关. 换句话说, 同一个类的不同实例共用同一个静态属性。
static class TestDemo{
public int a;
public static int count;
}
public static class Main{
public static void main(String[] args) {
TestDemo t1 = new TestDemo();
t1.a++;
TestDemo.count++;
System.out.println(t1.a);
System.out.println(TestDemo.count);
TestDemo t2 = new TestDemo();
t2.a++;
TestDemo.count++;
System.out.println(t2.a);
System.out.println(TestDemo.count);
//输出结果
1
1
1
2
b.修饰方法
如果在任何方法上应用 static 关键字,此方法称为静态方法。
静态方法属于类,而不属于类的对象即可以直接调用静态方法,而无需创建类的实例。静态方法可以访问静态数据成员,并可以更改静态数据成员的值。
c. 修饰代码块
静态代码块不管生成多少个对象,其只会执行一次,且是最先执行的。
注意:
(1)静态方法中不能使用this;
(2)this指向的是当前的实例;
(3)static方法和实例无关,之和类相关;
(4)同理也无法在static方法中访问非static的变量和方法;
(5)static修饰代码块,代码块只是在类加载的时候执行一次,往往用来初始化静态成员。
2.2 this关键字
(1)this指向当前对象的引用;
(2)this的类型就是当前这个类的类型;
(3)this这个引用的指向不能修改;
(4)this也可以用来调用方法;
(5)this不能是null。
• this引用的类型:对应类类型引用,即那个对象调用就是那个对象的引用类型;
• this引用只能在"成员方法中使用";
• this引用具有final属性,在一个成员方法中,不能再去引用其他的对象。
• this引用是成员方法第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将
• 调用成员方法对象的引用传递给该成员方法,this引用负责来接收
• 在成员函数中,所有成员变量的访问,都会被编译器修改成通过this来访问
• this引用具有final属性,在一个成员方法中,不能再去引用其他的对象。
• this 表示当前对象引用(注意不是当前对象)。可以借助 this 来访问对象的字段和方法(普通方法和构造方法)
注意:
(1)需要在一个构造方法当中调用当前类的另外一个构造方法的时候,通过this()的形式调用
(2)必须放在第一行,且只能调用一个;
(3)使用this调用构造方法的时候,只能在构造函数当中使用,不能在普通方法中使用
三、修饰限定符
• private: 类内部能访问,类外部不能访问;
• default 默认(也叫包访问权限): 类内部能访问,同一个包中的类可以访问,其他类不能访问;
• protected: 类内部能访问,子类和同一个包中的类可以访问,其他类不能访问;
• public : 类内部和类的调用者都能访问。
o