为啥不能直接赋值哇?

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

防止外面可以随意调用改变该类的属性。
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);
}
}
}
这里为什么显示Static declarations in inner classes are not supported at lanquage level '8'
为什么老师上课的代码就能够运行这个不知道错在哪里了
静态内部类,你看看是不是你的大括号没有括对啊

我想问一下这里为什么要放一个空的Person,不能直接用带参数的吗就是把空的person省略掉
这个是无参构造啊,当你有了有参构造,想要使用无参构造的时候,就必须要声明出来,除非你一定不使用无参构造就可以删除
老师想问下,这个我不太明白啥意思,这个是文档的截图为什么name可以,age不行

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

意思明白了!
好的。
反射可以调到私有属性吗
通过反射可以访问私有变量。
这是啥问题


老师看不到你这个Person的类呢,你试着检查一下这个类的结构是不是错误啦
这样的
com.javaStudy.encapsulation.aPerson {
(){
System..println(.)}
}
微信上找老师帮你细细看看吧
老师请问构造器和Javabean分别再什么情况下用呢,有啥区别
这是两个完全不同的东西。
JavaBean是一个类。类里面包含构造器。
老师请问构造器和Javabean分别再什么情况下用呢,有啥区别
这是两个完全不同的东西。
JavaBean是一个类。类里面包含构造器。
那set/get方法和构造器都应该在什么情况下使用呢
打比方,你定义了一个user类,里面有各种属性,你就需要有get,set方法,让程序通过调用get,set方法来赋值,取值。
构造器是用来初始化对象的。你User user=new user();这个就相当于是自动调用了无参构造器。

为什么在类Test中可以使用创建类User的对象啊?
微信里已解决
老师我想请教一下:用new创建一个对象和一个方法上代码格式是不是都一样?我在这方面有点混乱能否用代码举例
同学,你重述一下你的问题
什么意思
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);
}
}
l老师,这错哪了

小写

老师,主方法必须放在主类吗
是,你指得主类啥意思?
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;
}
}
}

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

System.out.println(p);在这种情况打印的为啥不是有@符号的那一串数
toString是Object类的方法,所有类都从Object类继承。如果你定义的类没有覆盖toString方法,则对象在调用toString方法时用的是Object类toString方法,返回的是“类名@hashcode".

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

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

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

因为你在赋值时,通过构造和通过setter/getter方法都可以的
你private修饰符怎么能放到类上来用呢
那为什么有的时候写成
class Person{}
有的时候写成
public class Person{}
这不就是修饰符放到类上来用的吗?
那么private protected这些修饰符,为什么就不能了呢?
那为什么有的时候写成
class Person{}
有的时候写成
public class Person{}
这不就是修饰符放到类上来用的吗?
那么private protected这些修饰符,为什么就不能了呢?
https://www.cnblogs.com/newbie27/p/10413558.html