第二章:构造器与封装

构造方法

  1. 构造方法作用:完成对象的初始化

  2. 构造方法的使用规则:
    a. 方法名与类名相同,参数列表保持一致
    b. 没有返回值类型,也没有返回值

代码演示:有参构造器的作用

注意:代码中出现this关键字,后面会详解
这里的作用:区别当前对象的属性和局部变量

public class Demo {
    public static void main(String[] args) {
        Student student = new Student("smith",66);	// 解析:完成对象的初始化
        System.out.println(student.name);   // 运行结果:smith
        System.out.println(student.age);    // 运行结果:66
    }
}

class Student {
    String name;
    int age;
    public Student(String name,int age) {
        this.name = name;	// 解析:this.name表示当前对象的属性
        this.age = age;
    }
}

构造器的基本应用

  1. jvm在默认情况下,系统自动生成一个“隐式”的无参构造方法,且方法中没有方法体
  2. 当创建对象时,会执行构造器中的内容
  3. 当自定义一个构造器时,会覆盖“隐式”的无参构造器
    若有参无参构造器都被调用时,需手动添加一个“显式”的无参构造器

代码演示:证明当创建对象时,会执行构造器中的内容

public class Demo1 {
    public static void main(String[] args) {
        Student student = new Student();    // 运行结果:无参构造器被执行
    }
}
class Student {
    public Student() {
        System.out.println("无参构造器被执行");
    }
}

代码演示:有参无参构造器都被调用时,需手动添加一个显式无参构造器

public class Demo {
    public static void main(String[] args) {
        Student student1 = new Student();    // 解析:创建对象时,调用无参构造器
        Student student2 = new Student(23);  // 解析:创建对象时,调用有参构造器
    }
}
class Student {
    int age;
    public Student() {
    }
    public Student(int age) {
        System.out.println("有参构造器被执行");
    }
}

构造器的流程分析

在这里插入图片描述

封装

private关键字

  1. 表示私有化
  2. 作用域:仅供本类进行调用
  3. 使用规则
    a. 可修饰变量、方法
    b. 不可修饰类(若将类进行私有化,那么其他类就无法创建该类的对象,这样就无意义)

封装的实现步骤

  1. 对属性进行private修饰
  2. set方法:用于对属性的判断并赋值
    方法的类型是void,参数中的类型与成员变量保持一致
  3. get方法:用于获取属性值
    没有参数列表,但方法的类型与返回值保持一致

特殊情况:设置方法中的赋值属性类型是boolean类型时,那么获取方法名更改为 isXxx(),其他与get方法使用方式相同

代码演示:set方法与get方法

public class Test {
    public static void main(String[] args) {
        Student student = new Student();
        student.name = "小明";
        student.setAge(188);
        System.out.println(student.name + " " + student.getAge());
        /* 运行结果
        	年龄有误,默认18岁
			小明 18
        */
    }
}
class Student {
    String name;
    private int age;

    public int getAge() {
        if(age > 0 && age < 121) {
            return age;
        } else {
            System.out.println("年龄有误,默认18岁");
            return 18;
        }
    }
    public void setAge(int age) {
        this.age = age;
    }
}

代码演示:构造器与与get方法

public class Test {
    public static void main(String[] args) {
        Student student = new Student("小明",188);
        System.out.println(student.name + " " + student.getAge());
        /* 运行结果
        	年龄有误,默认18岁
			小明 18
        */
    }
}
class Student {
    String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public int getAge() {
        if(age > 0 && age < 121) {
            return age;
        } else {
            System.out.println("年龄有误,默认18岁");
            return 18;
        }
    }

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值