02-单类定义(对象与方法,封装)

类和对象与方法,匿名对象封装
1.类和对象与方法
1.1对象作为方法的参数
回顾数组作为方法的参数
定义一个方法可以接收一个数组, 在方法的内部实现数组遍历.
Int[] arr = {10,20,30,40,50}
对象属于引用数据类型, 作为方法的参数时要记住一个核心,来回传递的是对象中保存的地址编号,并非是对象属性保存的值. 可以通过地址编号在内存中找到对应的数据
测试类中定义一个方法可以接收对象展示对象的信息

public class Test {

	public static void main(String[] args) {
		
		Person p1 = new Person();
		p1.name = "张三";
		p1.age = 20;
		//调用show01方法传递一个Person对象
		show01(p1);
		
	}
	//定义一个方法, 可以接受一个Person类型的对象,在方法的内部展示接受到的对象的名字和年龄
	public static void show01(Person p){
		System.out.println("name = "+p.name);
		System.out.println("age = "+p.age);
	}
}

程序运行的结果:
在这里插入图片描述
1.2类作为方法的返回值类型
回顾数组作为方法的返回值
定义一个方法 接收两个整数, 方法的内部求出这两个整数的加减乘的结果.并把这三个结果返回

定义一个方法,在方法内将数据组织成对象返回

public class Test {

	public static void main(String[] args) {
		
		//调用getKid方法,获取一个Person对象, 使用变量p接收
		Person p  = getKid();
		System.out.println("接收到对象的name = "+p.name);
		System.out.println("接收到对象的age = "+p.age);
	}
	//定义一个方法可以返回一个Person对象
	public static Person getKid(){
		Person p1 = new Person();
		p1.name = "小宝贝";
		p1.age = 1;
		
		return p1;
	}
}

程序运行的结果:

接收到对象的name = 小宝贝
接收到对象的age = 1

2.匿名对象
匿名对象:没有引用的对象
2.1匿名对象基本使用
匿名对象是指创建对象时,没有把对象地址值赋值给某个变量而直接使用。
如:已经存在的类:

public class Person{
public void eat(){
System.out.println();
}
}

创建一个普通对象

Person p = new Person();

调用eat方法

p.eat();

创建一个匿名对象,并直接调用eat方法

new Person().eat();

2.2匿名对象的特点
创建匿名对象直接使用,没有变量名。不使用的对象没有意义。

new Person().eat() //eat方法被一个没有名字的Person对象调用了。

匿名对象在没有指定引用时,只能使用一次。

new Person().eat(); 创建一个匿名对象,调用eat方法
new Person().eat(); 想再次调用eat方法,重新创建了一个匿名对象

匿名对象可以作为方法接收的参数、方法返回值使用

public class Demo {

	public static void main(String[] args) {

		Person p = getPerson();
		p.eat();

	}

	// 定义一个方法,返回一个Person对象
	public static Person getPerson() {
		// 普通方式
		// Person p1 = new Person();
		// return p1;

         // 匿名对象的方式
		return new Person();
	}

}
程序执行结果: 
吃吃吃

public class Demo {

	public static void main(String[] args) {
		//普通方式
		//Person p1 = new Person();
		//person_eat(p1);
		//匿名方式
		person_eat(new Person());
	}

	// 定义一个方法接收一个Person对象
	public static void person_eat(Person p) {

		p.eat();
	}
}

效果一样 都是吃吃吃

3.成员变量与局部变量区别
3.1区别
3.1.1在类中的位置不同
成员变量:类中,方法外
局部变量:方法中或者方法声明上(形式参数)
3.1.2在内存中的位置不同
成员变量:堆内存
局部变量:栈内存
3.1.3生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
3.1.4初始化值的不同
成员变量:有默认值
局部变量:没有默认值。必须先定义,赋值,最后使用
4.封装
4.1封装的概述
封装概述
是面向对象三大特征之一,另外两个是继承和多态
就是把对象的特性(成员变量)和行为(成员方法)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节
好处:
通过方法来控制成员变量的操作,提高了代码的安全性
把代码用方法进行封装,提高了代码的复用性
属性封装的步骤
使用private把属性隐藏。
提供公共方法getXxx()/setXxx()供外界访问属性

发布了186 篇原创文章 · 获赞 379 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/qq_45765882/article/details/104578300