面向对象(二)

面向对象(二)

封装

为了避免逻辑错误,建议对所有属性进行封装。并为其提供set和get方法进行设置和取得的操作。

public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person p = new Person();
		p.name = "张三";
		p.setAge(100);//调用setAge
		p.say();
		
		System.out.println(p.getAge());//getAge一般用于计算
	}

}
class Person {
	//对age属性进行封装,只能在这里调用
	String name;
	private int age;//使用private对属性封装
	//设置一个方法,设置年龄
	void setAge(int age2){
		if(age2>100 || age2<0) {
			System.out.println("错误");
		}else {
			age = age2;
		}
	}
	//获取年龄
	int getAge() {
		return age;
	}
	
	void say(){
		System.out.println("姓名:"+name+"   年龄:"+age);
	}

this关键字

在Java基础中,this关键字是一个最重要的概念。使用this关键字可以完成以下的操作:

· 调用类中的属性

· 调用类中的方法或构造方法

· 表示当前对象

可以修改上面的一部分代码:

class Person {
	//对age属性进行封装,只能在这里调用
	String name;
	private int age;
	//设置一个方法,设置年龄
	void setAge(int age){
		if(age>100 || age<0) {
			System.out.println("错误");
		}else {
			this.age = age;//这里可以用this,优点是简明
		}
	}

也可以用于无参方法

Person(){
	this(10);//调用上面的方法
}

在一个构造方法中,调用另一个构造方法时,调用的代码,必须编写在构造方法的第一行。

静态static

static表示“静态”的意思,可以用来修饰成员变量和成员方法

static的主要作用在于创建独立于具体对象的域变量或者方法

简单理解:

被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访

问。

并且不会因为对象的多次创建 而在内存中建立多份数据

  1. 静态成员 在类加载时加载并初始化。

  2. 无论一个类存在多少个对象 , 静态的属性, 永远在内存中只有一份( 可以理解为所有对象公用 )

  3. 在访问时: 静态不能访问非静态 , 非静态可以访问静态 !

public class Demo1 {

	public static void main(String[] args) {
		Person.ragion="北京";
		Person p1 = new Person("张一");
		Person p2 = new Person("张二");
		Person p3 = new Person("张三");
		Person p4 = new Person("张四");
		p1.say();
		p2.say();
		p3.say();
		p4.say();
		//批量更改地区之后
		Person.ragion="南京";
		p1.say();
		p2.say();
		p3.say();
		p4.say();
}
}
class Person {
	private String name;
	static String ragion;//创建静态属性
	
	Person(String name){
		this.name = name;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	void say() {
		System.out.println("姓名:"+name+"   地区:"+ragion);
	}
	
	}

代码块

普通代码块

在执行的流程中 出现的 代码块, 我们称其为普通代码块。

构造代码块

在类中的成员代码块, 我们称其为构造代码块, 在每次对象创建时执行, 执行在构造方法之前。

静态代码块

在类中使用static修饰的成员代码块, 我们称其为静态代码块, 在类加载时执行。 每次程序启动到关闭 ,只会

执行一次的代码块。

面试题:

构造方法 与 构造代码块 以及 静态代码块的执行顺序:

静态代码块 --> 构造代码块 --> 构造方法

{

}

作用域

作用域当前类同包子类其他包
public
protected×
default××
private×××

①类的成员变量的作用范围与类的实例化对象的作用范围相同,当类被实例化时,成员变量就会在内存中分配空间并初始化,直到这个被实例化对象的生命周期结束时,成员变量的生命周期才结束。

②被static修饰的成员变量称为静态变量或全局变量,与成员变量不同的是,静态变量不依赖于特定的实例,而是被所有实例所共享,只要一个类被加载,JVM就会给类的静态变量分配存储空间,可以通过类名和变量名来访问静态变量。

③局部变量的作用域与可见性为它所在的花括号内。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值