2021-06-14 类 this static关键字 数据域封装

  1. 类是对象的模板。它定义对象的属性,并提供用于以创建对象的构造方法以及操作对象的普通方法。
    对 象 和 类 305
    2.类也是一种数据类型。可以用它声明对象引用变量。对象引用变童中似乎存放了一个对象,但事实
    上,它包含的只是对该对象的引用。严格地讲,对象引用变量和对象是不同的,但是大多数情况下,
    它们的区别是可以忽略的。
    3.对象是类的实例。可以使用 new 操作符创建对象,使用点搡作符( .)通过对象的引用变量来访问该
    对象的成员。
    4.实例变量或方法属于类的一个实例。它的使用与各自的实例相关联。静态变量是被同一个类的所有
    实例所共享的。可以在不使用实例的情况下调用静态方法。
    5.类的每个实例都能访问这个类的静态变量和静态方法。然而,为淸晰起见,最好使用 “类名 .变量” 和 “类名 .方法" 来调用静态变量和静态方法。
    6.可见性修饰符指定类、方法和数据是如何被访问的。公共的( public)类、方法或数据可以被任何
    客户访问,私有的(private)方法或数据只能在本类中被访问。

类命名要开头大写,java是一个区分大小写的语言

package shuaiGePackge;


class Person{
	
	String name;
	int id;
	
	void print() {
		
		
		System.out.println("jianglongjie henshuai!!");
	}
	
	void introduce () {
		
		
		System.out.println("name:"+name+" id:"+id);
	}
	
	
}


public class demo1 {
	public static void main(String[] args) {
		
		person p = new person();
	
		p.id = 1;
		p.name = "jlj";
		
		p.print();
		p.introduce();
		
		
	}
}

this 关键字

关键字 this 引用对象自身。它也可以在构造方法内部用于调用同一个类的其

他构造方法。

关键字 this 是指向调用对象本身的引用名。可以用 this 关键字引用对象的实例成员。
例如,下面 a 的代码使用 this 来显式地引用对象的 radius以及调用它的 getAreaO 方法。
this引用通常是省略掉的,如 b 所示。然而,在引用隐藏数据域以及调用一个重载的构造
方法的时候,this 引用是必须的。

使用 this 引用隐藏数据域
使用 this 调用构造方法
package this关键字的使用;

class person{
	
	int age;
	int sex;
	String name;
	
	person(int newage, int newsex , String newname){
		
		age = newage;
		sex = newsex;
		name  = newname;
		System.out.println("构造方法1被调用");
	}
	
	void introduce () {
		person tmp = this;
		
		
		System.out.println("tmp name:"+tmp.name);
		
		System.out.println("this used\n");
		System.out.println("age:"+this.age);
		System.out.println("sex:"+this.sex);
		System.out.println("name:"+this.name);
	}
	
	
}




public class demo1 {
	public static void main(String[] args) {
		
		person p =new person(1,1,"shuai");
		p.introduce();
		
	}
}

static 关键字

静态变量被类中的所有对象所共享。静态方法不能访问类中的实例成员。

如果想让一个类的所有实例共享数据,就要使用静态变量(static variable), 也称为类变
量( class variable)。静态变量将变量值存储在一个公共的内存地址。因为它是公共的地址,
所以如果某一个对象修改了静态变量的值,那么同一个类的所有对象都会受到影响。Java 支
持静态方法和静态变童,无须创建类的实例就可以调用静态方法(static method)。

package static关键字的使用;

class person{
	
	static 	int age;
	int sex;
	String name;
	person(int newage, int newsex , String newname){
			
			age = newage;
			sex = newsex;
			name  = newname;
			System.out.println("构造方法1被调用");
		}
	
	
	static {
		System.out.println("静态代码块");
		age = 100;
	}
	
	
	
	/*static void introduce() {
		System.out.println(this.sex); //静态代码块里面不能有 this关键字
		
	}*/
	static void introduce() {
		System.out.println(age); //可以访问静态成员
		
	}
}
public class demo {
		public static void main(String[] args) {
			
			person p = new person(1,1,"shuai");
			
			person.age =100;
			
			System.out.println("1+2:"+add(1,2));
		}
		
		static int add(int a ,int b) {
			
			return a+b;
			
		}
}

数据域封装:将數据域设为私有保护數据,并且使类易于维护。

数据域封装的优点是什么?
为了避免对数据域的直接修改,应该使用 Private 修饰符将数据域声明为私有的,这称
为數据域封装(data fie丨d encapsulation)。

什么是访问器方法?什么是修改器方法?访问器方法和修改器方法的命名习惯是什么?

为了能够访问私有数据域,可以提供一个 get 方法返回数据域的
值。为了能够更新一个数据域,可以提供一个 set 方法给数据域设置新值。get 方法也被称
为访问器(accessor), 而 set 方法称为修改器(mutator)。

要使一个类成为不可变的,它必须满足下面的要求:

所有数据域都是私有的。
没有修改器方法。
没有一个返回指向可变数据域的引用的访问器方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值