为啥不能直接赋值哇?
你的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