类的特点 类是对象的数据类型 类是具有相同属性和行为的一组对象的集合
类的组成:属性和行为 1、属性:在类中通过成员变量来体现(成员变量指的是类中方法外的变量) 2、行为:在类中通过成员方法来体现(成员方法跟前面学的方法相比去掉static关键字即可)
类的定义
public class 类名{
//成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;
...
//成员方法
方法1,
方法2,
...
}
类的练习
xxxxxxxxxx
package ch2;
public class a1_1创建class {
//编写类的成员变量
String brand;
int price;
//编写成员方法
public void call(){
System.out.println("打电话");
}
public void sendMessage(){
System.out.println("发短信");
}
}
创建对象格式:
xxxxxxxxxx
类名 对象名 = new 类名();
使用成员对象 1、使用成员变量格式
xxxxxxxxxx
对象名.对象
2、使用成员方法格式
xxxxxxxxxx
对象名.方法名
对象的练习
public static void main(String[] args) {
//创建对象
a1_1创建class p = new a1_1创建class();
//上面那行是new出来的,会把放在堆内存,堆内存就有默认值,在上一节课创建这个类是用的是String类型,即默认值为null
//使用成员变量(注意输出的是默认值,因为上一节课创建的成员变量还没有进行赋值)
System.out.println(p.brand);
System.out.println(p.price);//同理在堆内存。上一节课创建的price是int类型,即默认值为0
//给成员变量赋值
p.brand = "Tom";
p.price = 2988;
//再次使用成员变量
System.out.println(p.brand); //输出Tom
System.out.println(p.price); //输出2988
//如何使用成员方法,如下。注意要先解决中文乱码问题
p.call(); //输出打电话。注意在上一节课创建过这个成员方法,所以才会有输出
p.sendMessage(); //输出发短信。注意在上一节课创建过这个成员方法,所以才会有输出
}
类和对象
xxxxxxxxxx
package ch2;
public class a2_1类和对象 {
//成员变量
String name;
int age;
//如果把上一行添加private关键字
private int age;
//添加之后,这个age只能在本文件下使用,其他文件不能使用这里的age
//即a2_2测试类和对象 和 a2_3测试多个对象指向相同 的文件里的age会出现红字报错
//如何让其他文件访问这个age呢,如下使用get/set方法,get是获取,set是设置
public void setAge(int a){ //setAge是用来设置值的,需要传值a进去,age的A要大写
age = a;
}
//get方法实例
public int getAge(){ //get方法是用于返回值,age是整型,age的A要大写
return age;
//优点是这样可以限制,其他文件输入的age值范围
if(a<0 || a>120){
System.out.printIn("你输入的年龄有误");
} else{
age = a;
}
}
//记得要去之前使用这里的age的文件下修改,即a2_2测试类和对象 和 a2_3测试多个对象指向相同 文件要修改
//即把其他文件之前的s.age=18改成s.setAge(18)
//成员方法
public void study(){
System.out.println("好好学习");
}
public void doHomework(){
System.out.println("起书拿笔");
}
public void show(){System.out.println(name + "," + age);}
}
测试类和对象
xxxxxxxxxx
package ch2;
public class a2_2测试类和对象 {
public static void main(String[] args) {
//创建对象
a2_1类和对象 s = new a2_1类和对象();
//使用对象
System.out.println(s.name + "," + s.age);
//上面的name和age成员变量还没有赋值,会输出默认值
//给成员变量赋值
s.name = "张三";
//注释掉age,需要用方法来设置成员变量的值
s.age = 18;
//再次使用对象
System.out.println(s.name + "," + s.age);
//使用成员方法
s.study();
s.doHomework();
s.show();
}
}
多个对象指向相同
x
package ch2;
public class a2_3测试多个对象指向相同 {
public static void main(String[] args) {
//创建一个对象并使用
a2_1类和对象 n1 = new a2_1类和对象();
//赋值
n1.name = "李四";
n1.age = 28;
System.out.println(n1.name + "," + n1.age);
//把第一个对象的地址赋值给第二个对象
a2_1类和对象 n2 = n1; //相当于前端的浅拷贝
//修改值
n2.name = "王五";
n2.age = 30;
System.out.println(n1.name + "," + n1.age);
System.out.println(n2.name + "," + n2.age);
//总结:当两个对象指向相同的时候,其中一个对象修改了堆内存的数据,另一个对象访问时拿到的数据也是被修改过的
}
}