JAVA_基础面向对象:封装和隐藏

面向对象:封装和隐藏

封装性

高内聚:类的内部数据操作细节自己完成,不允许外部干涉

低耦合:仅对外暴露少量的方法用于使用

隐藏对象内部的复杂性,只对外公开简单的接口。便于外界的调用,从而提高系统的扩展性、可维护性。通俗的说就是把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。

private 关键字:私有化。

private int age;

封装性的体现:将类的属性私有化(private),当我们通过对象的实例(instance)是调用不了被修饰的变量的。但我们可以提供公共(public)的方法来获取和设置此属性的值。

封装性的体现,需要权限修饰符来配合

  1. Java规定的4种权限(从小到大排列)private、缺省、protectedpublic
  2. 4种权限可以用来修饰类及类的内部结构:属性、方法、构造器、内部类。

注意类只能用public或缺省来修饰。

public class show {}
/* 或 */
class show {}

总结封装性:Java提供了4种权限修饰符来修改类及类的内部,体现类及类的内部结构在被调用时的可见性的大小。

构造器

构造器 | 构造方法 | constructor

构造器的作用

创建对象

初始化对象的属性

  • 如果没有显示的定义类的构造器的话,则系统默认提供一个空参的构造器

  • 定义构造器的格式:权限修饰符 类名(形参列表){ }

public class PersonTest {
	public static void main(String[] args) {
//	创建类的对象: new + 构造器
		Person p = new Person();
		p.eat();
		Person p1 = new Person("Tom");
		p1.study();
	}
}
class Person {
	String name;
	int age;
//	构造器
	public Person() {
		System.out.println("Person().....");
	}
	public Person(String n) {
		name = n;
	}
	public Person(String n, int a) {
		name = n;
		age = a;
	}
//  方法
	public void eat() {
		System.out.println("人吃饭");
	}
	public void study() {
		System.out.println("人学习");
	}
}
  • 一个类中定义的多个构造器,彼此之间构成重载
  • 一旦我们定义了类的构造器,系统就不在提供默认的空参构造器

JavaBean的用法

javaBean是一种Java语言写成的可重用组件。

所谓JavaBean,是指符合如下标准的Java类:

  • 类是公共的
  • 有一个无参的公共的构造器
  • 有属性和相对应的getset方法
public class Customer {
	private int id;
	private String name;
	
	public Customer() {
		
	}
	public void setId(int i) {
		id = i;
	}
	public int getId() {
		return id;
	}
	public void setName(String n) {
		name = n;
	}
	public String getName() {
		return name;
	}
}

this关键字的使用

this可以用来修饰:属性、方法、构造器

this修饰属性和方法:

  • this理解为:当前对象 或 当前正在创建的对象
  • 在类的方法当中,我们可以使用this.属性this.方法的方式,调用当前对象 或 当前正在创建的对象属性或方法。
  • 通常情况:下我们都选择省略this
  • 特殊情况下:如果方法形参和类的属性同名时,我们必须使用this来指明变量的属性,而非形参。
class Person {
	private String name;
	private int age;
    // 构造器
	public Person() {
		this.eat();
	public Person(String name) {
		this.name = name;
	public Person(int age) {
		this.age = age;
	public Person(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 void eat() {
		System.out.println("人吃饭");
		this.study();
	}
	public void study() {
		System.out.println("人学习");
	}
}

this调用构造器

  • 我们在类的构造器中,可以显式的使用this(形参列表)方法,调用本类中的其它构造器

  • 构造器不能通过this(形参列表)方式调用自己

  • 如果一个类中有n个构造器,则最多有n - 1构造器中使用this(形参列表)

  • 规定:this(形参列表)必须声明在当前的构造器的首行

  • 构造器内部,最多只能声明一个this(形参列表),用来调用其它的构造器

class Person {
	private String name;
	private int age;
	// 构造器
	public Person() {
		this.eat();
	}
	public Person(String name) {
		this();
		this.name = name;
	}
	public Person(int age) {
		this();
		this.age = age;
	}
	public Person(String name, int age) {
		this(age);
		this.name = name;
//		this.age = age;
	}
}
原文地址:https://www.cnblogs.com/BeautifulGirl230/p/14118847.html