Day 5
问:你们知道汽车有哪些属性和功能吗?
答:汽车的品牌、颜色、速度等属性,以及启动、加速、刹车等功能。
“汽车”就是一个类(Class),而每一辆具体的汽车则是这个类的一个对象(Object)。
类(Class):
类是对一类事物的抽象描述,它定义了该类事物的属性和方法。
类是模板,它描述了具有相同属性和行为的对象的集合。
类定义了如何创建对象以及对象可以执行的操作。
对象(Object):
对象是类的具体实例,它拥有类定义的属性和方法,并且具有自己的状态和行为。
对象是类的实例化,每个对象都是类的一个具体表现。
对象之间通过属性和方法来进行交互。
1. 定义类
使用class关键字来定义类。
在类定义中,可以声明类的属性(变量)和方法(函数)。
class Car {
String brand; // 品牌属性
String color; // 颜色属性
int speed; // 速度属性
// 启动方法
void start() {
System.out.println("汽车启动了!");
}
// 加速方法
void accelerate() {
speed += 10;
System.out.println("汽车加速了,当前速度:" + speed);
}
}
2. 创建对象
使用类名作为构造器来创建对象。
为对象的属性赋值,并调用对象的方法。
public class Main {
public static void main(String[] args) {
// 创建Car类的对象
Car myCar = new Car();
// 为对象的属性赋值
myCar.brand = "宝马";
myCar.color = "红色";
myCar.speed = 0;
// 调用对象的方法
myCar.start();
myCar.accelerate();
}
}
3. 访问修饰符
在上面的例子中,我们没有使用任何访问修饰符(如public
、private
、protected
)。在Java中,你可以使用这些访问修饰符来控制类的成员(属性和方法)的可见性。例如,如果你希望某个属性或方法只能在类内部使用,你可以使用private
修饰符。
public
想象你有一个公开的糖果罐(public 的类),放在客厅里(所有人都可以访问的地方)。任何人都可以来拿糖果(使用类的方法或变量)。
当你希望某个类、方法或变量能被任何其他类访问时,就应该使用public
修饰符。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
在上面的代码中,HelloWorld
类和 main
方法都被声明为 public
,这意味着它们可以被其他任何类访问。
private
想象你有一个私人的日记本(private 的变量),放在你的卧室里(只有你自己能访问的地方)。别人是看不到你写了什么内容的,只有你自己才能看。
private修饰符用于限制成员只能在其所在的类内部被访问。这对于封装类的内部状态非常有用,使得类的使用者不需要关心类的内部实现细节。
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
在上面的代码中,name
变量被声明为 private
,这意味着它只能在 Person
类内部被访问。我们提供了一个公共的 getName
方法来获取 name
的值,这样外部类就可以通过这个方法访问 name
,而不需要直接访问它。
static
想象你有一个家庭共有的电视机(static 的变量),放在客厅的墙上。这个电视机不是某个人的私人财产,而是整个家庭共有的。无论家里有多少人,电视机都只有一台。家里的任何人都可以去打开或关闭电视机(使用 static 方法),而不需要先问是谁的电视机。
static修饰符用于创建类的静态变量或方法。静态成员属于类本身,而不是类的任何特定实例。
public class Counter {
static int count = 0;
public static void increment() {
count++;
}
public static int getCount() {
return count;
}
}
在上面的代码中,count
变量和 increment
、getCount
方法都被声明为 static
。这意味着它们属于 Counter
类本身,而不是任何特定的 Counter
对象。因此,你可以直接通过类名来访问它们,而不需要创建类的实例。
Counter.increment();
int currentCount = Counter.getCount();
课后练习
课后作业
- 编写一个表示学生的类Student,包含姓名、年龄、学号等属性,以及学习、考试等方法。
- 创建一个Student类的对象,并测试其属性和方法。