Java三大特性之——封装

发布于:2023-02-09 ⋅ 阅读:(670) ⋅ 点赞:(0)

封装是面向对象的思想特性

一.封装

1.封装的定义

封装:将抽象性函式接口的实现细节部分包装隐藏起来的方法。

2.封装的步骤

对属性的封装:

对成员变量加修饰符private

在类中书写set和get方法进行对属性的赋值和取值

 public class Person {
        private String name;
	    private int age;
		private int weight;
}

这段代码中对name、weight和age用private修饰,也就意味着将这两个属性封装了 ,通过其他方法访问不了。

需要通过set和get方法来赋值取值

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;
		}
		public int getWeight() {
			return weight;
		}
		public void setWeight(int weight) {
			this.weight = weight;
		}

完整代码:

	class Cat{
		private String name;//对姓名封装
		private int age;//对年龄封装
		private int weight;//对体重封装
		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;
		}
		public int getWeight() {
			return weight;
		}
		public void setWeight(int weight) {
			this.weight = weight;
		}
		
	}
public class Demo3 {
	public static void main(String[] args) {
		Cat cat = new Cat();
		//通过set进行赋值
		cat.setName("小黑");
		cat.setAge(2);
		cat.setWeight(20);
		System.out.println("姓名: "+cat.getName());
		System.out.println("年龄: "+cat.getAge());
		System.out.println("体重: "+cat.getWeight());
	}
}

运行结果:

我们创建了一个猫类,猫类里面有姓名,年龄,体重,并且封装了Cat类的属性,就不能通过对象.属性来赋值了,就要通过set方法赋值和get方法取值。

二.this.关键字

写在类中代表当前对象

        可以使用this关键字调用属性和方法

        this关键字只能在方法(成员方法和构造方法)中使用

  可以调用当前的构造方法

         只能在构造方法中调用构造方法

         this ()只能在构造方法中放在第一行

this.属性名

	class Person{
		private String name;
		private int age;
		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;
		}

		public Person(String name,int age) {
			this.name = name;
			this.age = age;
		}
	}
public class Demo4 {
	public static void main(String[] args) {
		Person person = new Person("张三", 20);
		System.out.println("姓名: "+person.getName());
		System.out.println("年龄:"+person.getAge());
	}
}

运行结果: 

this.方法名

	class Dog{
		public void play() {
			System.out.println("正在执行play方法");
		}
		public void run() {
			this.play();
			System.out.println("正在执行run方法");
		}
	}
public class Demo5 {
	public static void main(String[] args) {
		Dog dog = new Dog();
		dog.run();
	}
}

其中通过this.paly()在run方法中调用另一个play方法。

三.多类合作

一个类对象可以当成另一个类的成员变量

案例:

	class People{
		private Student student;
		public Student getStudent() {
			return student;
		}
		public void setStudent(Student student) {
			this.student = student;
		}
		
	}
	class Student{
		private String name;
		private char sex;
		private int age;
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public char getSex() {
			return sex;
		}
		public void setSex(char sex) {
			this.sex = sex;
		}
		public int getAge() {
			return age;
		}
		public void setAge(int age) {
			this.age = age;
		}
		
	}
public class Demo6 {
	public static void main(String[] args) {
		People people = new People();
		Student student = new Student();
		student.setName("张三");
		student.setSex('男');
		student.setAge(20);
		people.setStudent(student);
		System.out.println("学生姓名: "+people.getStudent().getName());
		System.out.println("学生性别: "+people.getStudent().getSex());
		System.out.println("学生年龄:  "+people.getStudent().getAge());
	}
}

运行结果:


网站公告

今日签到

点亮在社区的每一天
去签到