上周回顾
- 上周开始正式的系统学习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版权协议,转载请附上原文出处链接和本声明。