会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132385个问题
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 541楼
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 542楼
JAVA 全系列/第一阶段:JAVA 快速入门/飞机大战小项目训练 545楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 546楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 547楼
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 549楼
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 550楼

class Person {
    private String name;
    private int age;
    public Person() {
 
    }
    public Person(String name, int age) {
        this.name = name;
        // this.age = age;//构造方法中不能直接赋值,应该调用setAge方法
        setAge(age);
    }
     
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setAge(int age) {
        //在赋值之前先判断年龄是否合法
        if (age > 130 || age < 0) {
            this.age = 18;//不合法赋默认值18
        else {
            this.age = age;//合法才能赋值给属性age
        }
    }
    public int getAge() {
        return age;
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }
}
 
public class Test2 {
    public static void main(String[] args) {
        Person p1 = new Person();
        //p1.name = "小红"; //编译错误
        //p1.age = -45;  //编译错误
        p1.setName("小红");
        p1.setAge(-45);
        System.out.println(p1);
         
        Person p2 = new Person("小白"300);
        System.out.println(p2);
    }
}

老师,构造方法Person中,不使用this.age=age;是否因为需要用setAge(age);来限制输入的年龄

JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 551楼
JAVA 全系列/第一阶段:JAVA 快速入门/控制语句、方法、递归算法 552楼
JAVA 全系列/第一阶段:JAVA 快速入门/飞机大战小项目训练 553楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 554楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637