20220719 十组 袁清清
作者:互联网
java学习序列5
今日重点
-
this关键字
-
构造器
-
封装
this关键字
-
this可以调用成员变量
-
this可以调用成员方法
-
this可以调用构造函数
-
这种调用方式,只存在于构造函数和构造函数之间
-
必须放在方法体的第一行
-
不可以两个构造函数互相调用,否则出现死循环现象
构造器
-
构造器在创建对象时执行初始化,创建一个对象时,会进行初始化
-
构造器的格式: 权限修饰符 类名(无参/有参){}
-
根据有无参数,可分为无参构造 和有参构造
-
不能被static、final、synchronized、abstract和native修饰,构造方法不能被子类继承
-
倘若类中已存在有参构造函数,则编译器不再提供默认无参构造。实例化对象时需赋值,不然报错
-
java编译器会自动创建无参构造函数,因此在类中,无参构造即使没有,也可省略不写。实例化对象时无需赋值
举例
public class Dog {
private String color;
private int age;
public Dog(){}
public Dog(String color,int age){
this.color=color;
if(age>=0)
this.age=age;
}//构造器
}
封装
(1)代码层面
a:属性私有化,所有的属性都要用private封装
b:提供一个公有的set,get方法。
getter方法能够按照客户的期望返回格式化数值
setter方法可以限制和检验setter方法传入参数是否合法
隐藏对象的内部结构
c:正确定义一个类:
所有的属性私有化
每个属性都有对应的 set,get方法
(2)思想层面
a:多个地方都要用同一个功能,那我们可以把类似的功能代码封装成一个方法
b:如果说多个方法都需要重复使用,我们可以把一堆方法封装成一个类
举例
public class Test {
public static void main(String[] args){
Student stu1 = new Student();
stu1.setNo(1);
stu1.setName("张三");
stu1.setGender('男');
stu1.setAge(12);
System.out.println("学号:" + stu1.getNo() + ",姓名:" + stu1.getName() + ",性别:" + stu1.getGender() + ",年龄:" + stu1.getAge());
}
class Student {
private int no;
private String name;
private char gender;
private int age;
//学号的Setter/Getter方法
public void setNo(int no) {
this.no = no;
}
public int getNo() {
return this.no;
}
//姓名的Setter/Getter方法
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
//性别的Setter/Getter方法
public void setGender(char gender) {
this.gender = gender;
}
public char getGender () {
return this.gender;
}
//年龄的Setter/Getter方法
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
今日总结
今天感觉还是学的不太明白,一直在给属性赋值,调用方法,不同类之间来回的切换,感觉被绕昏了。。。。
标签:stu1,十组,清清,age,20220719,private,int,public,构造函数 来源: https://www.cnblogs.com/yqq123/p/16496230.html