接口当做参数传给方法

上周回顾

  • 上周开始正式的系统学习Java,但是只学习了几天,所以没有写.这周回忆一下所学到的知识.这周的重中之重就是学写了面向对象,面向对象作为Java语言很重要的一个特性,前期的理解与掌握其中的逻辑关系是很重要的,但是在学习的基础上也是一个由浅入深的过程.

主要问题

  • 卡了我很久的问题就是以接口当做参数传给方法的时候,
public int test(InterfaceA interfaceA) {
		return interfaceA.method(num);
	}
  • 当我的借口有两个实现类,而且接口里面的方法是带参数有返回值的情况下,是需要给他的实现类里面创建一个num的变量,然后写上构造方法以及getter和setter方法,这样我才能够在使用参数接口调用它的方法时实现带参运行;
public static void main(String[] args) {

		InterfaceTest face = new InterfaceTest(5);
		ClassA classA = new ClassA();
		ClassB classB = new ClassB();
		int a = face.test(classA);
		System.out.println(a);
		int p = face.test(classB);
		System.out.println(p);
		
	}
  • 这里的ClassA和ClassB都是接口的实现类而且重写了接口的方法,在调用时,需要分别创建他们的对象,还有接口实现类的对象,然后调用test方法将ClassA和ClassB的对象通过参数列表传递给接口的实现类,这其实也就是将接口实现类的地址传递给了test方法,然后test方法带着他的num参数找到接口的实现类,然后调用它里面的方法,最后输出出来的值就是将num变量传入接口实现类方法并计算的来的结果.

总结

  • 通过学习了面向对象基础到进阶再到高级,我也总结了一些我觉得可能正确的结论,我认为的面向对象,就是面向你所写程序的使用者,或者是所调用你这个方法的调用者,如果你写方法的时候没有面向对象,没有设置可以使用你的条件,那你这个程序无疑是失败的,而且在java的学习或者工作中,如果你没有面向对象的编程思想,那你肯定是做不出来好得成果的.就失去了灵魂.

  • 最后在给大家看看我写的登录系统的代码,就是一个很简单的判断,然后要考虑几种情况:

import java.util.Scanner;

/*需求: 试题:假设用户账号为:admin,密码为123,编写用户登陆案例。
		 *要求:请将登陆定义为login方法, 并将login方法写在UserService类中
		 * 
		 * 需求分析:1.先得有一个UserService的类
		 * 			2.这个类里面会有一个登录的方法叫login方法
		 * 				3.再来看回需求,用户的账号是admin,那就要考虑他输对了和没输对两种情况,
		 * 					4.密码同理,要考虑两种情况
		 * 						5.因为用户的账户肯定不会变,可以考虑用 public static final 修饰
		 * 							6.密码是可以改变的,所以我们可以用private修饰,并给他写getter,setter方法
		 * 
		 * 
		 * 备注:调用方法的main方法在最下面;本来需要写一个更改密码的部分,但是题目没要求,就没有写
		 * 
		 * */
//第一步,创建UserService类
public class UserService {
	//类里面有两个成员变量,要注意常量是没有构造方法和getter,setter方法的
	//常量要大写
	//因为每个账户的账号是固定的,所以用常量
	public static final String ACCOUNT = "admin";
	private int passWord = 123;
	
	//无参构造
	public UserService() {
		super();
	}
	
	//全参构造
	public UserService(int passWord) {
		super();
		this.passWord = passWord;
	}

	//getter和setter方法
	public int getPassWord() {
		return passWord;
	}

	public void setPassWord(int passWord) {
		this.passWord = passWord;
	}
	
	//定义一个登录方法
	public void login() {
		//肯定要接收用户输入
		Scanner input = new Scanner(System.in);
		
		int i = 0;//定义一个变量让控制输入账号的次数
		while(true) {
			if(i<3) {
				//因为只想让这句话在开始出现一次,所以加个判断;
				if(i == 0) {
					System.out.println("请输入您的账号:");
				}
				String str = input.next();
				//当你输入的账号跟你自己的账号相同时
				if(ACCOUNT.equals(str)) {
					int count = 0;//控制输密码的次数
					//死循环,用来控制输入密码的次数
					while(true) {
						count++;
						System.out.println("请输入您的密码:");
						int key = input.nextInt();
						//输入的密码跟初始密码一样时,登陆成功
						if(passWord == key) {
							System.out.println("恭喜你登陆成功!");
							break;
						}else {
							//不一样时看是不是小于三次,小于还可以继续进行
							if(count<3) {
								System.out.println("密码错误,请重新输入:");
							}else {
								//不小于直接结束
								System.out.println("由于多次输入错误,账号被冻结!");
								break;
							}
							
						}
					}	
					break;
				}else {
					if(i < 2) {
						System.out.println("账号输入错误,请重新输入:");
					}else {
						System.out.println("账号输入次数太多,账户已经被冻结!");
						break;
					}
				}
			}
			i++;
		}
		
		
		
	}
	
	
	//写一个main方法实现以下
	public static void main(String[] args) {
		UserService us = new UserService();
		us.login();
	}
	
		
}

有问题欢迎大家随时指正,纯小白,大家一起进步啊;


版权声明:本文为weixin_45573037原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。