【Java 面向对象】详解面向对象语言三大特征之【封装】+ JavaBean封装类标准

封装

0. 背景

  • 面向对象编程 是 对客观世界的模拟
  • 成员变量隐藏在对象内部,外界无法直接触碰
    比如 人有一副皮囊,里面包裹各种器官,外界无法接触。
  • 这样就很好理解封装的保护作用:防止该类的代码被其他类随便访问
  • 封装的原则:将属性隐藏,提供公共方法给外界访问的窗口
    比如 人的嘴唇、耳朵等 可以大概理解为公共方法

1. 封装的步骤

  1. 使用**private**关键字修饰 成员变量
  2. 给其他类提供公共方法:给外界需要访问的成员变量,提供一对方法:getXxx方法、setXxx方法

2. private关键字的使用方法(即封装操作)

2.1 private的含义

  • private是权限修饰符,是最小的权限
  • 修饰对象 : 成员变量 、 成员方法
  • 被修饰的成员变量和成员方法,仅能在本类中访问,即类自身访问

2.2 private的使用方法

private 数据类型 变量名

修饰成员变量:

public class Student{
    
    
	private String name;
	private int age;

	public void setName(string n){
    
    
		name = n;
	}

	public String getName(){
    
    
		return name;
	}

	public void setAge(int a ){
    
    
		age = a;
	}

	public int getAge(){
    
    
		return age;
	}
}

如果改成:

	public void setName(string name){
    
    
		name = name;
	}
	
	public void setAge(int age){
    
    
		age = age;
	}

会导致成员变量赋值失败

原因:形参变量名和成员变量名重名,导致成员变量名被隐藏
成员变量无法被访问,导致赋值失败

3. 优化1—this关键字

3.1 this的含义

  • this:所在类的当前对象的引用(地址值),就是对象自己的引用
  • 方法被对象调用,方法中的this就代表那个对象

谁在调用,this就代表谁

3.2 this使用方法

this.成员变量名

使用this修饰方法中的变量,就可以解决成员变量被隐藏的问题

public class Student{
    
    
	private String name;
	private int age;

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

	public String getName(){
    
    
		return name;
	}

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

	public int getAge(){
    
    
		return age;
	}
}

4. 优化2—构造方法

  • Java自动提供无参数构造方法
  • 创建Java对象的时候,构造方法被用来初始化对象,给对象的成员变量赋初值
  • 自己定义构造方法,则原始无参数构造方法失效

4.1 构造方法的定义格式

修饰符 构造方法名(参数列表){
    
    
	//方法体
}

注意点:⭐

  • 构造方法名必须和其所在类名相同
  • 没有返回值,所以不需要定义返回值类型,void也不用写
public class Student{
    
    
	private String name;
	private int age;

	//无参数构造方法
	public Student{
    
    }

	//有参数的构造方法
	pubilc Student(String name,int age){
    
    
		this.name = name;
		this.age = age;
	}
}

构造方法的注意点:
在这里插入图片描述

5. JavaBean

JavaBean是Java语言编写类的标准规范,要求:
1. 类是具体且公开的
2. 有无参数的构造方法
3. 提供用来操作成员变量的setget方法

public class ClassName{
    
    
	//成员变量
	//构造方法
	//无参构造方法【必须】
	//有参构造方法【建议】
	//成员方法
	//getXxx()
	//setXxx()
}

举例代码:

public class Student{
    
    
//成员变量
	private String name;
	private int age;
	
//构造方法
	//无参数构造方法
	public Student{
    
    }

	//有参数的构造方法
	pubilc Student(String name,int age){
    
    
		this.name = name;
		this.age = age;
	}
	
//成员方法
	public void setName(string name){
    
    
		this.name = name;
	}

	public String getName(){
    
    
		return name;
	}

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

	public int getAge(){
    
    
		return age;
	}
}

测试类:

public class TestStudent{
    
    
	public static void main(String[] args) {
    
    
	
	//无参构造函数的使用
	Student s = new Student();
	s.setName("小猪");
	s.setAge(18)
	System.out.println(s.getName()+"..."+s.getAge());
	
	//有参构造函数的使用
	Student s1 = new Student("小猪",18);
	System.out.println(s1.getName()+"..."+s1.getAge());
	}
}




猜你喜欢

转载自blog.csdn.net/weixin_44121966/article/details/118725453