Java基础之封装

1、封装

Java的三大特性:封装、继承、多态

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

​ 对属性的封装 、 对方法的封装 、 对类进行封装 、 对项目进行封装

1.1对属性进行封装

​ 1.成员变量加修饰符 private

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

package com.yu.test;

public class Demo3 {
	public static void main(String[] args) {
		Dog2 dog = new Dog2();
		dog.setAge(5);
		System.out.println(dog.getAge());
	}
}
class Dog2 {
	private int age;
    
    //封装可以控制变量值的大小和范围
	public void setAge(int age) {
        if(age > 10){
            System.out.println("狗狗老了");
	}  
		this.age = age;
	}
	public int getAge() {
		return age;
	}
}

总结:

就是要对成员变量就赋值和取值的
1.对实体类中的成员变量进行加private修饰
2.在实体类中 set方法进行赋值  get方法进行取值!!!

2、this关键字

字面意思:这个

​ 1.写在类中,代表当前对象,可以使用this关键字调用属性和方法

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

​ 2.this可以调用当前的构造方法(很少用)

​ (1) 只能在构造方法中去调用构造方法

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

package com.yu.test;

public class Demo3 {
	public static void main(String[] args) {
		Dog2 dog = new Dog2();
		dog.setAge(5);
		System.out.println(dog.getAge());
	}
}
class Dog2 {
	private int age;
	public Dog2 () {
	
	//只能在构造方法的第一行,并且,不能同时调用两个构造方法
		this(9);
		
	}
	public Dog2(int age) {
		
	}
	public Dog2(int age , int mun) {
		
	}
	
	
	public void setAge(int age) {
		if(age >=5) {
			System.out.println("狗狗老了");
		}
		this.age = age;
	}
	public int getAge() {
		return age;
	}
}

this关键字的注意事项:

1.调用成员变量。在构造方法,在成员方法
2.调用成员方法。在构造方法,在成员方法
3.this调用构造方法,只能能放在构造方法中的第一行,并且一个构造方法只能调用一个构造方法

3.类对象可以作为一个方法的参数

方法的参数可以是八大基本数据类型、String、数组

类对象也可以作为方法的参数

案例:
部门类
员工类
部门类下面有员工

package com.yu.homework;

class Branch{
	String addres; //地址
	Employee employee; //员工类
	//员工类作为部门类方法的参数,可以实现用部门类调用员工的属性
	public void command(Employee employee) {
		employee.work();	
	}	
}
class Employee{
	private String name;
	private String age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	
	public void work() {
		System.out.println("上课");
	}
}
public class Demo1 {
	public static void main(String[] args) {
		Employee employee = new Employee();
		Branch branch = new Branch();
		
		branch.addres = "Java郑州千峰培训班";
		employee.setName("博哥");
		System.out.print(employee.getName() + "在" + branch.addres);
		branch.command(employee);
	}
}

4、多类合作【重点】

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

案例:
老师类
学生类
老师带了很多学生 把学生存倒数组中 Student[] students = new Student[6];

package com.yu.homework;

import java.util.Arrays;
import java.util.Scanner;
class Student{
	private String student_name ;
	private int age;
	public String getStudent_name() {
		return student_name;
	}
	public void setStudent_name(String student_name) {
		this.student_name = student_name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}
//老师类
class Teacher{
	
	//private String name;
	private Student[] student;//定义一个学生数组
	public Teacher() {} //无参构造
	
	//有参构造传入学生对象数组
	public Teacher(String name,Student[] student) {
		System.out.println("老师:" + name);
		for(int i = 0; i < student.length; i++) {
		//打印学生	
		System.out.println(student[i].getStudent_name() + "  "
		+ student[i].getAge());
		
		}	
	}
//	public String getName() {
//		return name;
//	}
	public Student[] getStudent_name() {
		return student;
	}
}

public class Demo2 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		Student[] students = new Student[3];
		for(int i = 0; i < students.length; i++) {
			students[i] = new Student();
		}
		
		for(int i = 0; i < students.length; i++){	
			System.out.print("请输入学生姓名:");
			String name = scanner.next();
			students[i].setStudent_name(name);
			System.out.print("请输入学生年龄:");
			int age = scanner.nextInt();
			students[i].setAge(age);		
		}
		System.out.println("请输入你老师的姓名:");
		String teacher_name = scanner.next();
		
		Teacher teacher = new Teacher(teacher_name , students); 
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小余学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值