1.类的定义
在java中,我们可以用关键字class来定义一个类,一个java文件可以同时定义多个class。
【示例】类的创建方式
// 定义一个Person类
class Person {
}
// 定义一个Dog类
class Dog {
}
// 每一个源文件必须有且只有一个public class,并且类名和文件名保持一致!
public class ObjectDemo {
}
上面的类定义好后,没有任何的其他信息,就跟我们拿到一张张图纸,但是纸上没有任何信息,这是一个空类,没有任何实际意义。所以,我们需要定义类的具体信息。
类的组成:
-
属性 field,定义格式: [修饰符] 属性类型 属性名 = [默认值] ;
-
方法(行为) method,定义格式: [修饰符] 返回值类型 方法名(形参列表) {}
以下Student类中的属性也称为成员变量,Student类中的方法称之为成员方法。
【示例】创建一个学生类,并添加类的成员变量和成员方法
public class Student {
// 属性,此处也称为成员变量
String name; // 姓名
int age; // 年龄
// 方法,此处也称为成员方法
void eat(String food) {
System.out.println(name + "在吃" + food);
}
void study() {
System.out.println(name + "年龄" + age + "岁,在学习java");
}
}
注意: 成员变量定义在类中,整个类中的成员方法都可以访问;
2. 创建对象
在java中,对象也叫做object或instance(实例),所以也称为实例对象。
要想创建一个对象,那么必须先有一个类,然后通过new关键字来创建一个对象。
语法格式:类名称 对象名称 = new 类名称();
【示例】通过Student类(模板),创造出两个学生对象(具体实例)
// 测试类
public class ObjectTest {
public static void main(String[] args) {
// 实例化小明学生对象
Student stu1 = new Student();
// 成员变量赋值
stu1.name = "小明"; // 设置名字
stu1.age = 18; // 设置年龄
System.out.println("name:" + stu1.name + " age:" + stu1.age);
// 调用成员方法
stu1.eat("小龙虾"); // 调用吃放方法
stu1.study(); // 调用学习方法
// 实例化小花学生对象
Student stu2 = new Student();
// 操作成员变量
stu2.name = "小花"; // 设置名字
stu2.age = 17; // 设置年龄
System.out.println("name:" + stu2.name + " age:" + stu2.age);
// 调用成员方法
stu2.eat("冰淇淋"); // 调用吃放方法
stu2.study(); // 调用学习方法
}
}
注意事项:
-
成员变量隶属于于对象,只能通过对象来调用,我们可以通过 对象.成员变量 来操作成员变量。
-
成员方法隶属于于对象,只能通过对象来调用,我们可以通过对象.成员方法(实参列表) 来调用成员方法。
3. 成员变量默认值
我们可以在类中对成员变量显示初始化,也可以在创建对象成功后,通过 对象.成员变量 来设置成员变量值。如果以上两种操作都不做,java虚拟机会使用默认的值对其初始化。
整型 | 0 |
---|---|
浮点型 | 0.0 |
字符型 | ‘\u0000’ |
布尔值 | false |
引用类型 | null |
4. 对象内存分析
栈:用于存放局部变量,其特点是:先进后出,自下而上存储,方法执行完毕,自动释放空间。
堆:用于存放new
【随堂练习】
1、使用计算器(Calculator)完成加法和减法运算,并能显示出该计算器的品牌和尺寸。
计算器成员变量:品牌(brand)、尺寸(size)
计算器成员方法:加法运算(add)、减法运算(sub)和显示计算机信息(show)
5.成员变量和局部变量区别
局部变量就是定义在方法或代码块中的变量,成员变量就是定义在类中和和类的方法处于同一个层次。
成员变量和局部变量的区别:
-
区别一:定义的位置不同
成员变量定义在类中,整个类中的成员方法都可以访问;
局部变量定义在函数或代码块中,只在所属的区域有效。
-
区别二:在内存中的位置不同
成员变量存在于堆内存的对象中;
局部变量存在于栈内存的方法中。
-
区别三:生命周期不同
成员变量随着对象的创建而存在,随着对象的消失而消失;
局部变量随着所属区域的执行而存在,随着所属区域的消失而释放。
-
区别四:初始化不同
成员变量有默认初始值;
局部变量没有默认初始值。
-
区别五:可用修饰符不同
成员变量可以被public、protected、private、static、final等修饰符修饰;
局部变量不能被public、protected、private、static修饰,只能被final修饰。
在使用变量时需要遵循的原则为:就近原则。首先在局部范围找,有就使用;接着在成员位置找。
6.匿名对象
通过使用new关键字来创建对象,这种对象分为两种:匿名对象与非匿名对象。何为匿名对象,何为非匿名对象呢? 匿名对象其实就是没有名字的对象,是定义对象的一种简写格式。
这种形式的对象称之为匿名对象:new Student();
这种形式的对象称之为非匿名对象:Student stu = new Student();
使用场合:
— 当对象方法仅进行一次调用的时候,可以简化为匿名对象。
— 匿名对象可以作为实际参数进行传递。
【示例】匿名对象做实参传递
public class ObjectDemo {
public static void main(String[] args) {
// 调用学生学习方法,此处用匿名对象最何止
stuStudy(new Student());
}
/**
* 学生学习方法
* @param stu 学生对象
*/
public static void stuStudy(Student stu) {
stu.study();
}
}
ps:如需最新的免费文档资料和教学视频,请添加QQ群(627407545)领取。