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;
}

今日总结

今天感觉还是学的不太明白,一直在给属性赋值,调用方法,不同类之间来回的切换,感觉被绕昏了。。。。

posted @ 2022-07-19 23:19  兜兜里藏着糖  阅读(20)  评论(0)    收藏  举报