java网课|封装性&This&构造方法【整理后】

封装性在java中的体现

方法就是一种封装
“找人做事”
“不亲历亲为每一个行为”

关键字private也是一种封装

将一些细节信息隐藏起来,堆外界不可见
e.g.创建一个方法,要用的时候main调用就是了,不在乎方法内咋写~

private关键字的作用及使用

什么时候用:

  • 将需要保护的成员变量进行修饰
  • 🚫阻止不合理的数据被设置进来🚫,提高安全性(通过方法内条件判断质量把关)
public class Person{
	private int age;//在数据类型前面加上private就好
	......

加上之后有什么需要注意的

  • 该变量只能在【本类】中使用了
//若:age在类a中为private,在类b中就不能再对象.age调用了
	person.age=20;//会报错
  • 【超出范围】不能【直接】访问

如何访问呢?
在本类中定义一个public方法,对private变量操作
通过间接:找方法“倒手”访问private成员
必须叫setXXX/getXXX

public void setAge(int num){//方法内部可以自己加操作,进行“质量把关”
	if(num<100&&num>=0){
		age=num;
		}else{
		System.out.prinln("数据不合理!");//当传入一个不合理数据时,age存储的仍未0,传入的放不进来
	}	
}

对于set,不能有返回值,参数类型和成员变量对应

public int getAge(){
	return age;
	}

对于get,不能有参数,返回值类型和成员变量对应

P110 使用private关键字定义学生类

如果类中有private boolean类型==》get方法应写成isXXX而不是getXXX

public class Student{
	private boolean male;
	......
	//getter
	public boolean isMale(){//注意要写is,不是get
		return male;//male是类中的私有成员boolean变量,返回值为Boolean类型

	//setter
	public boolean setMale(boolean b){
		male=b;
	}

调用代码:

public static void main(String []args){
	Student stu=new Student();
	stu.setName("鹿晗");
	stu.setMale(true);//看这里,boolean类型参数传入是true/false
	
	System.out.println("是不是爷们:"+stu.isMale());

P111 使用this关键字

什么情况使用

  • 【局部】变量和【成员】变量重名时,根据【就近原则】,使用局部变量
  • 如:局部和成员都有name变量在这里插入图片描述
public class Person{
	String name;//成员变量name
	
	public void sayHello(String name){//局部变量name
		System.out.println(name+",你好,我是"+this.name);//先局部,后成员,成员处用this引出成员变量
	}
}

成员处用this引出成员变量

通过谁调用的方法,谁就是this

使用情况一览

//成员中有name成员变量时
public void setName(String name){//参数和成员重名了
	this.name=name;//用this指出是当前对象的成员变量
	}

P112 构造方法

专门用来创建对象的方法
new时就是在调用构造方法

注意事项

1、构造方法的名称须和所在的类名称完全一样,包括大小写

  • 方法一般都是小写+大写,此为例外

2、无返回值类型,void都不写

Student stu=new Student();//此处的new调用构造方法,Student()即构造方法

3、发生在new时,new后的即是构造方法

4、不能return一个具体的返回值

public class Student {
    public Student(){
        System.out.println("构造方法执行啦!");
        return 100;//错误
    }
}
public class Student {
    public Student(){
        System.out.println("构造方法执行啦!");
        return;//可以
    }
}

5、没有编写则默认自动调用(和C++一样)(编译器赠送)

6、一旦编写,不再“赠送”

辨认构造方法?

public Student(String name,int age){
	this.name=name;
	this.age=age;
	}
  • 无返回值
  • 方法名=类名

构造方法的重载

**此Student类构成:成员变量/无参构造方法/全参构造方法/setter/getter **

public class Student {
    //成员变量
    private String name;
    private int age;
    //无参数的构造方法
    public Student() {
        System.out.println("构造方法执行啦!");
    }
    //全参数的构造方法
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //有了全参数的构造函数,还是需要setter和getter可以在后来改变数据
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(int age){
        this.age=age;
    }
}
public class Demo02Student() {
    Student stu=new Student();
    System.out.println("======");

    Student stu2=new Student("可歆",20);
    stu2.setName("淇雅");//后期修改数据时需要用到set类方法
    stu2.setAge(20);

}

全参数的构造方法:便于将现有数据放进对象
set方法:便于修改数据

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值