java面向对象02_面向对象编程

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(); // 调用学习方法
	}
}

注意事项:

  1. 成员变量隶属于于对象,只能通过对象来调用,我们可以通过 对象.成员变量 来操作成员变量。

  2. 成员方法隶属于于对象,只能通过对象来调用,我们可以通过对象.成员方法(实参列表) 来调用成员方法。

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)领取。

发布了35 篇原创文章 · 获赞 0 · 访问量 347

猜你喜欢

转载自blog.csdn.net/zhoujunfeng121/article/details/104581548