【java学习】对象的产生(18)

文章目录

  • 1. 初始化赋值
  • 2. 匿名对象
  • 3. 练习
    • 3.1. 习题一
    • 3.2. 习题二
  • 4. 总结


1. 初始化赋值

当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的变量类型都是引用类型,如上节的 Person 和前面讲过的数组。

成员变量类型 初始值
byte 0
short 0
int 0
long 0L
float 0.0F
double 0.0D
char ‘\u0000’( 表示为空 )
boolean false
引用类型 null

举例说明

创建一个学生类:

package default_package;

/**
 * 学生类
 * @author 14532
 */

public class Student {
	
	public String name;//姓名
	public int age;//年龄
	public String course;//课程
	public String interest;//兴趣
	
	/**
	 * 显示学生个人信息
	 */
	public void showInfo() {
		System.out.println("姓名:" + name);
		System.out.println("年龄:" + age);
		System.out.println("姓名:" + course);
		System.out.println("姓名:" + interest);
	}

}

创建Test.java调用学生类,且不给它赋初值

package default_package;

public class Test {

	public static void main(String[] args) {
		Student s = new Student();
		s.showInfo();
	}
	
}

Test.java运行结果:
【java学习】对象的产生(18)_第1张图片

2. 匿名对象

我们也可以不定义对象的句柄(如先Student s = new Student(); 然后s.showInfo();),而直接调用这个对象的方法。这样的对象叫做匿名对象
如:new Student().showInfo();

使用情况

  • 如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
  • 我们经常将匿名对象作为实参传递给一个方法调用。

3. 练习

3.1. 习题一

习题1: 创建一个 Person 类,其定义如下:
【java学习】对象的产生(18)_第2张图片
要求:
(1) 创建 Person 类的对象,设置该对象的name 、 age 和 sex 属性,调用 study 方法,输出字符串“ studying” ,调用 showAge() 方法显示 age 值,调用 addAge() 方法给对象的 age 属性值增加 2 岁。
(2) 创建第二个对象,执行上述操作,体会同一个类的不同对象之间的关系。

答案:
Person类

package default_package;

public class Person2 {
	public String name;
	public int age;
	public int sex;//性别,0男1女
	
	public void study() {
		System.out.println("studying");
	}
	
	public void showAge() {
		System.out.println(age);
	}
	
	public int addAge(int i) {
		age += i;
		return age;
	}
}

Test.java:

package default_package;

public class Test {

		Person2 p = new Person2();
		
		p.name = "Lucy";
		p.age = 11;
		p.sex = 1;
		p.study();
		
		int a = p.addAge(2);
		System.out.println("a:" + a + " p.age:" + p.age);
	
}

Test.java运行结果:
【java学习】对象的产生(18)_第3张图片

3.2. 习题二

习题2: 利用面向对象的编程方法,设计类 Circle 计算圆的面积。

答案:
Circle类

package default_package;

public class Circle {
	/**
	 * 面积的计算方法
	 * @param r
	 * @return
	 */
	public double area(double r) {
		return 3.14 * r * r;
	}
}

Test.java:

package default_package;

public class Test {

		double area = new Circle().area(2);
		System.out.println("半径为2的圆的面是:" + area);
	
}

Test.java运行结果:
在这里插入图片描述

注意:
类的访问机制:
(1) 在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(例外:static 方法访问非 static 的成员变量,编译不通过。)
错误写法:

【java学习】对象的产生(18)_第4张图片
正确写法:
【java学习】对象的产生(18)_第5张图片

package default_package;
	static int t = 0;
	public static void main(String[] args) {
		System.out.println(t);
	
}

(2) 在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员
【java学习】对象的产生(18)_第6张图片

4. 总结

面向对象思想“落地”法则(一)

  1. 关注于类的设计,即设计类的成员:属性 、方法
  2. 类的实例化,即创建类的对象(比如: Person p = new Person();
  3. 通过对象.属性对象.方法 执行

你可能感兴趣的:(java学习,java,学习,python)