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 星