暂无权限

加入尚新途,才有权限看这些视频哦!

点击前往
×
问答
微信用户
1楼

为啥不能直接赋值哇?


image.png

尚新途

你的set方法里定义了年龄的范围,如果你不定义,可以直接赋值

微信用户
2楼
尚新途

同学这个是有什么问题吗

嘎嘎嘎?
3楼

1677991771569.png

尚新途

防止外面可以随意调用改变该类的属性。

微信用户
4楼
package 封装;


class Person {
    private String name;
    private int age;
    public Person(){

    }
    public Person(String name,int age){
        this.name = name;
        this.age =age;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public void setAge(int age) {
        if(age >130 || age < 0){
            this.age =18;
        }else{
            this.age = age;
        }

    }
    public class Test2{
        public static void main(String[] args) {
            Person p1 = new Person();
            p1.name ="小红";
            p1.age =-12;
            p1.setAge(-45);
            p1.setName("小兰");
            System.out.println(p1);

            Person p2 = new Person("小黑",300);
            System.out.println(p2);
        }
    }
}

image.png

这里为什么显示Static declarations in inner classes are not supported at lanquage level '8' 

为什么老师上课的代码就能够运行这个不知道错在哪里了

尚新途

静态内部类,你看看是不是你的大括号没有括对啊

微信用户
5楼

image.png

我想问一下这里为什么要放一个空的Person,不能直接用带参数的吗就是把空的person省略掉


尚新途

这个是无参构造啊,当你有了有参构造,想要使用无参构造的时候,就必须要声明出来,除非你一定不使用无参构造就可以删除


外桑
6楼

老师想问下,这个我不太明白啥意思,这个是文档的截图为什么name可以,age不行

image.png

尚新途

这里可以这样直接赋值,老师这里说的不能直接赋值,是因为下面的判断,如果直接赋值,下面的判断就不会走了,无法进行年龄判断

image.png

尚新途

意思明白了!

尚新途

好的。

路痴
7楼

反射可以调到私有属性吗


尚新途

通过反射可以访问私有变量。

Fintik
8楼

这是啥问题

4.30.png



尚新途

image.png

老师看不到你这个Person的类呢,你试着检查一下这个类的结构是不是错误啦

尚新途
这样的
com.javaStudy.encapsulation.aPerson {
    (){
        System..println(.)}

}


尚新途

微信上找老师帮你细细看看吧

asss
9楼

老师请问构造器和Javabean分别再什么情况下用呢,有啥区别


尚新途

这是两个完全不同的东西。

JavaBean是一个类。类里面包含构造器。

asss
10楼

老师请问构造器和Javabean分别再什么情况下用呢,有啥区别


尚新途

这是两个完全不同的东西。

JavaBean是一个类。类里面包含构造器。

尚新途

那set/get方法和构造器都应该在什么情况下使用呢

尚新途

打比方,你定义了一个user类,里面有各种属性,你就需要有get,set方法,让程序通过调用get,set方法来赋值,取值。

构造器是用来初始化对象的。你User user=new user();这个就相当于是自动调用了无参构造器。

徐鸢
11楼

image.png

为什么在类Test中可以使用创建类User的对象啊?

尚新途

微信里已解决

温如言
12楼
老师我想请教一下:用new创建一个对象和一个方法上代码格式是不是都一样?我在这方面有点混乱能否用代码举例


尚新途

同学,你重述一下你的问题

image.png什么意思

我爱学习
13楼
package com.bjsxt.test3;

public class Preson {
    private String name;
    Private int id;
    private int pwd;
    public Preson(){
    }
    public Preson(String name,int id,int pwd){
        this.name=name;
        SetAge(age);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getPwd() {
        return pwd;
    }

    public void setPwd(int pwd) {
        this.pwd = pwd;
    }
}
class test{
    public static void main(String[] args){
        Person p= new Person();
        p.setName("小杨");
        p.setAge(30);
        System.out.println(p);
    }

}


image.png

l老师,这错哪了

尚新途

image.png

小写

尚新途

image.png

老师,主方法必须放在主类吗

尚新途

是,你指得主类啥意思?

我爱学习
14楼
package com.bjsxt.test3;

public class Test05 {
public static void main(String[] args){
    Person11 p=new Person11();
    p.setAge(28);
    p.setName("无情");
    System.out.println(p.getAge());
    System.out.println(p.getName());
}
}


package com.bjsxt.test3;

public class Person11{

    private String name;
    private int age;
    private boolean flag;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

   public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "Person[name="+name+",age="+age+"]";

    }

    public void setAge(int age) {
        if(age<0||age>150){
            System.out.println("年龄不合法!");
        }else{
            this.age = age;
        }

    }
}
尚新途

image.png

老师,圈住的如何打印出来

尚新途

image.png

尚新途

System.out.println(p);在这种情况打印的为啥不是有@符号的那一串数

尚新途

toString是Object类的方法,所有类都从Object类继承。如果你定义的类没有覆盖toString方法,则对象在调用toString方法时用的是Object类toString方法,返回的是“类名@hashcode".

image.png

如果没有重写,自动调用的是Object的tostring方法

image.png

zjshaopku
15楼

老师好,问题见图片中的红字问题,谢谢~~~~~~~~~~

IMG_1568.PNG

尚新途

这里可以直接就这样写就好

image.png


因为你在赋值时,通过构造和通过setter/getter方法都可以的

尚新途
另外第一行,如果定义为 private class Person(){ } 是否意味着里面的属性,无论定义为public还是其他类型,都属于private类型了?
尚新途

你private修饰符怎么能放到类上来用呢

尚新途

那为什么有的时候写成

class Person{}

有的时候写成

public class Person{}


这不就是修饰符放到类上来用的吗?

那么private protected这些修饰符,为什么就不能了呢?

尚新途

那为什么有的时候写成

class Person{}

有的时候写成

public class Person{}


这不就是修饰符放到类上来用的吗?

那么private protected这些修饰符,为什么就不能了呢?

尚新途

https://www.cnblogs.com/newbie27/p/10413558.html

自我检测(5S)