一个简单的面向对象程序,不太理解,新手请教:)小弟先谢谢了
class Check{
	String name ;
	String password ;
	public boolean whether(String name,String password){
		if(name.equals("zhangyichao")&&password.equals("zyc198755")){
			return true;
		}else{return false;}
		}
}
class Operate{
	public String info[];
	public Operate(String info[]){
		this.info=info;
	}
	public String login(){
		Check check = new Check();
		this.isExit();
		String str;
		String name = this.info[0];
		String password = this.info[1];
		if(check.whether(name, password)){
			str="欢迎光临";
		}else{str="重新输入";}
		return str;
	}
	public void isExit(){			// 判断参数个数,来决定是否退出程序
		if(this.info.length!=2){
			System.out.println("输入的参数不正确,系统退出!") ;	// 给出一个正确的格式
			System.out.println("格式:java LoginDemo02 用户名 密码") ;
			System.exit(1) ;		// 系统退出
		}
	}
}
public class test03{
	public static void main(String args[]){
		Operate oper = new Operate(args);
		oper.login();
	}
}
问题:虽然学了几天java,但是对于简单的程序还是理解不透,这个简单的程序有几个不明白的地方,请求各位高手帮忙
1、在Operate类中的login方法中有这么一段代码this.isExit();这个this应该指的是当前对象"check",那么还原到isExit方法中的判断语句是不是应该就是if(
check.info.length!=2)?
2、check是Check类的对象,那么这个对象到底是一个什么形式的东西?check.whether是check对象调用了Check类的方法,那这个check对象也是保存姓名和密码么?
------解决方案--------------------1、在Operate类中的login方法中有这么一段代码this.isExit();这个this应该指的是当前对象"check",那么还原到isExit方法中的判断语句是不是应该就是if(check.info.length!=2)?
this指的是main函数中的 oper,也就是class Operate的实例。
if(this.info.length!=2) 还原到最原始就相当于main函数中的 if (args.length !=2)
2、check是Check类的对象,那么这个对象到底是一个什么形式的东西?check.whether是check对象调用了Check类的方法,那这个check对象也是保存姓名和密码么?
check就是Check类的实例,普通的东西。
check对象里面的两个属性name 和 password 在本例中根本没使用到,可以从类定义中删除。
------解决方案--------------------1. this.isExist()中, this是指的Operate类的对象, 对应类test03中main方法的Operate oper = new Operate(args);这行代码. 换句话说, Opoerate的login方法中this.isExit()在这个代码中相当于oper.isExit()
Check类没有isExit方法.所以this.info.length != 2 也相当于oper.info.length !=2.
2. Check类中, 有类属性name和password(或者叫成员变量?忘记了...), 但是在whether方法中, 根据代码, 调用的并不是类属性name和password, 而是方法的参数name, password.
class Check{
   String name ;   //类属性name
   String password ; //类属性password
   public boolean whether(String name,String password){ //方法参数name以及password
       if(name.equals("zhangyichao")&&password.equals("zyc198755")){ //比较方法参数name是否为"zhangyichao"以及password是否为"zyc198755"
           return true;
       }else{
           return false;
       }
   }
}
换句话说整个代码中间Check类的类变量name与password并没有使用到. 从头到尾name与password变量都未初始化. 同样, check对象并不保存用户名和密码. 用户名和密码最终是以字符串数组的形式保存在Operate类的对象oper的成员变量info中.