Java基础-封装


面向对象三大特性:封装、继承、多态

一、封装之private:

定义: 封装就是将对象的属性和实现细节隐藏起来,仅对外提供公共的访问方式。

注意:private仅仅是封装的一个体现形式,并不代表封装全部。

private详解:

A:private是一个关键字,表示私有的意思,属于访问权限修饰符

B:private修饰的成员,在本类中能直接访问,在其他类中不能被直接访问

C:一般情况下,在程序设计的时候,所有成员变量都应该使用private修饰,然后通过public修饰的方法来访问私有的成员变量


二、构造方法的概述 和使用

构造方法格式和特点:

A:构造方法名要与类名一致

B:没有返回值类型

C:没有具体返回值


构造方法的作用:用于给对象进行初始化

给成员变量赋值的方式:

A:通过公有的setter方法给成员变量赋值

B:通过构造方法传入的参数给成员变量赋值

注意:

A:虽然构造方法可以给成员变量赋值,但是这个不是构造方法最主要的功能;

B:setter方法的存在,就是为了给对象的成员变量赋值使用的。在实际情况下,某些对象的属性值不是一成不变的,有可能在某些时候需要修改属性的值;

当需要修改属性的值时,构造方法就起不了作用了。只能通过setter方法来变更属性的值。

因此,虽然构造方法有给成员变量赋值的功能,但是还需要setter方法的存在。


代码体现如下:

public class Student {
	// 定义学生的属性
	private String name;
	private int age;

	// 构造方法
	public Student() {
	}

	public Student(String name, int age) {
		this.name = name;
		this.age = age;
	}

	
	//setter和getter
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
}

构造方法注意事项:

A:如果在类中没有定义任何构造方法,JVM默认会添加一个无参的构造方法;

B:如果类中已定义了构造方法,JVM就不会再添加无参的构造方法了;

C:构造方法也可以重载(参数列表不同)


三、this关键字的概述和应用

A:this关键字代表谁:哪个对象调用非静态方法,在方法里面就有一个this关键字,代表该对象

B:应用场景:解决了局部变量隐蔽成员变量的问题(当成员变量和局部变量重名时,无法给成员变量赋值的问题)

this关键字的标准代码:

<span style="white-space:pre">		</span>private String name;
		private int age;
		public Dog(String name,int age)
		{
			this.name = name;
			this.age = age;
		}
		public void setName(String name)
		{
			this.name = name;
		}
		public String getName()
		{
			return name;
		}

、代码块的概述(面试)

A:局部代码块:

1、概念:定义在方法中,用{}括起来的一段代码;

2、作用:可以让局部代码块中的变量尽快从内存中消失,提高内存的利用率。

B:构造代码块:

1、概念:定义在类的成员位置,用{}括起来的一段代码;

2、作用:如果类中所有的构造方法都共享一个内容时,可以将该内容定义在构造代码块里,统一初始化。

局部代码块 示例代码:

public void method(){
		{
			int x = 10;	
			System.out.println(x);
		}
	}

构造代码块 示例代码:

public class Student {
	// 定义学生的属性
	private String name;
	private int age;
	
	//构造代码块
	{
		speak();
	}
	
	//一般方法
	void speak(){
		System.out.println("哇哇叫");
	}

	// 构造方法
	public Student() {
	}

	public Student(String name, int age) {
		this.name = name;
		this.age = age;
	}


五、对象的初始化过程(面试) 例:Person p = new Person();

1、将Person.class加载到内存中;

2、在栈内存中开辟一个名字为p的空间;

3、new Person()在堆内存中开辟空间,建立对象;

4、方法进方法区,成员变量进堆内存并默认初始化;

5、对成员变量进行显式初始化(假如有的话);

6、如有有构造代码块,会执行代码块中的内容;

7、执行构造方法,对象初始化;

8、对象初始化完成,将堆内存中对象的首地址赋值给栈内存中的变量p。

六、static关键字

概述:是一个关键字,代表静态的意思,可以修饰成员变量和成员方法;

成员特点:

A:随着类的加载而加载,因此在static修饰的方法中,没有this和super关键字,因为这都是在对象建立的时才存在;

B:优先于对象而存在;

C:可以使用类名直接调用——类名.方法名;

什么情况下使用static:

当一个事物中的某个内容被类中所有对象共享时,可以用static修饰这部分内容;如果是对象中的特有内容,那么不可以用static修饰。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值