1-13 编程练习(5)
为什么我将测试类Test写了并进行对象实例化后(虽然别处的代码还有bug,但也应该有一些输出呀),没有输出,即没有打印出“用户名”和“密码”。
public class Test{ // 测试方法 public static void main(String[] args) { //实例化对象,调用相关方法实现运行效果 User testOne=new User("Lucy",123456); User testTwo=new User("Mike",123456); testOne.showInformation(); testTwo.showInformation(); } }
public class User{ //定义属性用户名、密码 private String username; private int password; /*通过构造方法实现属性赋值*/ public User(String username, int password){ this.username=username; this.password=password; } /*set/get设定*/ public String getUsername(){ return this.username; } public void setUsername(String username){ this.username=username; } /**/ public int getPassword(){ return this.password; } public void setPassword(int password){ this.password=password; } /**/ //描述信息 public void showInformation(){ System.out.println("用户名:"+getUsername()); System.out.println("密码:"+getPassword()); // System.out.println("用户名:"+this.username); // System.out.println("密码:"+this.password); } }
public class UserManager{ // 用户信息验证的方法 public String checkUser(User one, User two) { // 判断用户名是否为空,是否一致 if(one.getUsername().equals(two.getUsername())){ //System.out.println("用户名一致"); }else{ System.out.println("用户名不一致"); } //判断密码是否为空,是否一致 if(one.getPassword().equals(two.getPassword())){ //System.out.println("密码一致"); }else{ System.out.println("密码不一致"); } return one.getUsername(); } }
另外,对于输出部分,是该使用这下面哪一种代码?使用get方法应该是运用了封装,从而不会造成数据泄露,也符合安全性。但是我记得之前有一次写代码,好像只能使用this. 的方式才能将运行结果显示出来
//描述信息 public void showInformation(){ System.out.println("用户名:"+getUsername()); System.out.println("密码:"+getPassword()); // System.out.println("用户名:"+this.username); // System.out.println("密码:"+this.password); }
亦或是:
public void showInformation(){ // System.out.println("用户名:"+getUsername()); // System.out.println("密码:"+getPassword()); System.out.println("用户名:"+this.username); System.out.println("密码:"+this.password); }
谢谢。
0
收起
正在回答 回答被采纳积分+1
1回答
林懿
2019-01-14 02:04:59
编译错误,程序都没有成功运行,怎么会输出结果。错在 UserManager 里的 equals ,说了两遍了,不再赘述。
至于 this.username 和 this.getUsername(),个人理解所谓安全性是指禁止别的类直接调用这个类的属性,通过封装,可以让别的类只能通过调用方法来获取或修改这个类的属性。重点是针对于别的类而言。而在这个类的内部,使用 this 直接调用属性值还是通过方法调用属性值没有什么区别。
但是如果是在类的内部设置属性值的话,课程里老师提到过,建议使用 setUsername() 方法,而不是直接调用属性值 this.username = username ,因为你可以在 setUsername() 方法里添加一些逻辑条件。
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星