javaSE (四)封装(Encapsulation)、匿名对象、类构造方法、static关键字、私有构造方法

本文探讨了匿名对象在Java中的使用及限制,解释了如何通过set和get方法操作属性,以及this关键字的作用。深入剖析了构造方法、静态属性和方法的概念与应用场景,通过实例展示了静态成员与非静态成员的区别。

匿名对象能否调用属性并赋值?
匿名对象能调用属性并赋值,因为每次调用都会创建一个新的对象,赋值完后就变成垃圾了。所以没有意义

priate: 封装, 提供setXXX和getXXX来操作被封装的属性
this: 因为setXXX(String age),如果这个时候成员变量也是private String age,重名了,就近原则,这个时候就是age给自己赋值了,
所以要加this.age=age

setXXX(String age){
age = age;  所以要加this.age=age
}

构造方法:初始化类的属性
没有返回值
可以重载,在创建类的时候可以直接初始化类的属性;
没有构造方法,默认会给一个空参构造函数 null 、0
有了有参构造,初始化必须用有参,所以建议加上一个无参构造

static 修饰属性,随着类的加载而加载,优先于对象存在,放在方法区的静态区,被所有对象共享,只要初始化一次,节约内存
可以直接用类名.静态属性/方法来赋值 Person.name
静态只能访问静态
类比:static修饰的是解压缩文件,而非静态的是压缩文件,需要创建一个对象来解压缩才能用,所以非静态成员方法可以访问静态成员变量,而静态成员方法不可以访问非静态成员变量(因为这个时候非静态的还没有解压缩,或者说还没被创建出来!)自然地,静态属性或方法不能有this关键字
举个例子,如下,这个时候static String country;是静态的,所以只要用类名.静态属性来赋值一次就行了。



public class ArrTest {
	public static void main(String[] args) {
		Student st1 = new Student();
		st1.name = " pingan";
		Student.country = "china";
		st1.say();
		
		Student st2 = new Student();
		st2.name = " wuyanzu";
		st2.say();
	}
		
}
class Student{
	String name;
	static String country;
	
	public void say(){
		System.out.println("name:"+ name + ",country:"+ country);
	}
	
}
		

注意:如果一个类中所有的,需要创建一个私有构造方法,目的是不让其他本类创建对象,类中的方法用类名直接调用即可

import nupt.cn.ArrTest;

public class LongTest {
	
	public static void main(String[] args) {
	   
		
		int[] arr = new int[] {1,33,5,7};
		ArrTest.max(arr);
		
		ArrTest.through(arr);
		ArrTest.reverse(arr);
		
	}
}	
package nupt.cn;

public class ArrTest {
		private ArrTest() {}	
	//max
	public  static void max(int[] arr) {
		int max = arr[0];
		for(int i = 0 ; i < arr.length; i++ ) {
			max = max > arr[i] ? max : arr[i];
		}
	System.out.println(max);
}
	//through
	public	static  void through(int[] arr) {
		
		for(int i = 0 ; i < arr.length; i++ ) {
			System.out.print(arr[i]+ " ");
		}
		System.out.println();
}
	
//reverse
//注意:这里要加一个brr来保存,只用一个arr不行!!!	
   public static   void reverse(int[] arr) {
		int[] brr = new int[arr.length]  ;
		for(int i = 0 ; i < arr.length; i++ ) {
			brr[i]  =  arr[(arr.length) - i -1];	
		}
		through(brr);
}

	}
	






		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值