Java面向对象之静态属性静态方法、访问权限、getter与setter

一、静态

1、static静态的特点
(1)数据共享
(2)属于类的.并不属于对象
(3)优先于对象产生的

2、优于对象产生(构造器解释)
在程序执行时,是先创建静态构造器,再创建通用构造器。

public class Test03{
	{
		System.out.println("---我是通用构造器---");
	}
	
	static{
		System.out.println("---我是静态构造器---");
	}
	
	//创建构造方法
	public Test03(){
		System.out.println("------构造方法------");
	}
	//定义主方法
	public static void main(String[] args){
		new Test03();  //调用构造方法
	}
}

Java面向对象之静态属性静态方法、访问权限、getter与setter

3、静态属性或方法使用类名去访问(静态方法也可直接调用)

public class Test03{
	static char level = 'D';  //定义静态属性
	{
		System.out.println("---我是通用构造器---");
	}
	
	//静态方法会默认执行,不创建对象也会执行
	static{
		System.out.println("---我是静态构造器---");
	}
	
	//创建构造方法
	public Test03(){
		System.out.println("------构造方法------");
	}
	public static void SStatic(){
		System.out.print("She is " + size + ' ');  //使用静态属性可以不用this
		System.out.println("------我是静态方法------");
	}
	//定义主方法
	public static void main(String[] args){
		Test03.SStatic();  //使用类名访问静态方法
		SStatic();  //直接访问静态方法
	}
}

Java面向对象之静态属性静态方法、访问权限、getter与setter

二、访问权限

1、权限类别
public:公共的,所有成员都能访问
default:默认的,也称包访问权限,在自己的包内才能访问,其他包内不能访问
private:私有的,在其他类中不能访问(包中可以有多个类)

2、练习

public class Test03{
	public String a = "public";   //公有变量
	String b = "default";  //默认变量
	private String c = "private";  //私有变量
	
	public static void main(String[] args){
		Test03 Te = new Test03();  //创建对象
		//主方法中访问三种类型的变量
		System.out.println(Te.a);
		System.out.println(Te.b); 
		System.out.println(Te.c); 		
	}
}

Java面向对象之静态属性静态方法、访问权限、getter与setter
在其他包(文件夹)中则无法访问到变量b,在其他类中无法访问到变量c。
我们平时用的最多的就是public和private。

三、getter与setter

1、getter、setter原型

  • 主方法类的内容:
public class Test03 {
	public static void main(String[] args){
		Test03_Person P = new Test03_Person();  //创建对象人
		
		//年龄的语法没有问题。但是,逻辑上不对,年龄不可能是负数!
		// P.name = ”草帽路飞";  //给对象属性赋值
		// P.age = -1;
		
		//查看这个人的名字和年龄
		P.setName("草帽路飞");  //给私有成员属性赋值
		P.setAge(-1);  //给私有成员属性赋值
		System.out.println(P.getName());  //获取私有成员属性
		System.out.println(P.getAge()); 
		P.act();
	}
}
  • 对象人类的内容
public class Test03_Person{
	//成员安量是私有的
	private String name;
	private int age;
	
	//setter原型
	public void setName(String name){
		this.name = name;
	}
	//保证我们的成员变量是值是规范的
	public void setAge(int age){
		if (age<0){
			this.age = 0;
		}else{
			this.age = age;
		}
	}
	
	//getter原型
	public String getName(){
		return this.name;
	}
	public int getAge(){
		return this.age;
	}
	
	//定义人的行为方法
	public void act(){
		System.out.println("行为:" + this.age + "岁大的" + this.name + "正在散步~");
	}
	
}
  • 结果
    Java面向对象之静态属性静态方法、访问权限、getter与setter
    2、getter与setter的调出方法
    在写好属性之后,空白处右击,Generate,选Getter and Setter,就会自动生成以上getter与setter的原型框架,只需要稍作修改就可以直接使用了。
上一篇:在C#中使用setter作为参数? (也许有代表吗?)


下一篇:如何利用缓存机制实现JAVA类反射性能提升30倍