🤟🤟🤟🤟🤟🤟 学习心得 🤟🤟🤟🤟🤟🤟
今天关于面向对象的课要记的东西有点多,很多记不住的,每一个出现的对象或是属性知道是什么意思,自己一写就不知道放在什么地方,但是后来多看了一下还是能记住什么时候用构造器赋值看创建对象是为了干什么如果说创建对象仅仅是为了调用这个类的方法,建议使用无参构造器如果说创建对象的时候需要使用到对象的某个属性,可以使用构造器。
⛳⛳⛳ 今日心情 ⛳⛳⛳
今天的比昨天熟练一丝,但是什么时候用ststic什么时候用构造器更好,遇到这样的问题,思维就跟不上了。
👇👇👇👇👇👇👇👇👇👇👇重要:关于关键字 👇👇👇👇👇👇👇👇👇👇👇
this关键字
this代表的是当前类的对象,this代表的是当前方法的调用者
this既然是代表方法的调用者,实际上和对象的作用是一样的
既可以调属性,也可以调方法
一个类中可以有什么?
属性 方法 构造器
this不能用在static方法中
开发中this通常用在什么位置? 赋值
通常用在赋值,特别是构造器赋值
用我自己话说,就好比自己的名字和年龄是一出生就有,这时用构造器更好,像银行卡那种必须时=是做特定的事情才能得到一般不用。
💎💎💎举个例子:
注册和登录:
封装,属性一定要私有化,提供公有的set,get方法
1.创建一个user类:username和password
2.创建一个employee类,Id和name
3.Demo类
登录:输入账号和密码,然后去数组中比对
遍历数组,比对成功,则显示登陆成功,比对失败,输出账号密码有误
注册2.0版:用户名不能重复
遍历,用户名和数组中的用户名比对一下
🌈🌞🍀首先,先建三个类,这个是user类,是要调回Dome的,用get set写更容易理解
1 public class User {
2 private int username;
3 private int password;
4
5 public User(){
6 }
7 public User(int username, int password) {
8 this.username = username;
9 this.password = password;
10 }
11 public void setUsername(int username){
12 this.username = username;
13 }
14 public void setPassword(int password){
15 this.password = password;
16 }
17 public int getUsername(){
18 return username;
19 }
20 public int getPassword(){
21 return password;
22 }
23 }
🌈🌞🍀Employee类,和user同理
public class Employee {
private int id;
private int name;
public Employee() {
}
public Employee(int id, int name) {
this.id = id;
this.name = name;
}
public void setId(int id) {
this.id = id;
}
public void setName(int name) {
this.name = name;
}
public int getId() {
return id;
}
public int getName() {
return name;
}
}
🌈🌞🍀最后Dome执行
import java.util.Scanner;
public class Dome {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// User类型的数组
// User类型的数中保存的就是一个一个的User对象
// 当从User类型的数组中取值的时候,比如说users[0]是一个User类型的对象
User [] users = new User[10];
users[0] = new User(123456,123456);
int index = 1;
main:for (;;){
System.out.println("请选择功能:1、注册 2、登录");
String flag = sc.next();
u:for(;;) {
switch (flag) {
case "1":
System.out.println("请输入账号:");
int username = sc.nextInt();
for (User user : users) {
if (user != null) {
if (username == user.getUsername()) {
System.out.println("用户名不能重复,请重新输入!");
continue u;
}
}
}
System.out.println("请输入密码:");
int password = sc.nextInt();
// 保存账号密码,保存的是User对象
// 构建User对象
User user = new User(username, password);
users[index] = user;
System.out.println("注册成功,账号:" + users[index].getUsername() + ",密码:" + users[index].getPassword());
index++;
continue main;
case "2":
System.out.println("请输入账号:");
int username1 = sc.nextInt();
System.out.println("请输入密码:");
int password1 = sc.nextInt();
boolean b = false;
for (User u : users) {
if (u != null) {
if (u.getUsername() == username1 && u.getPassword() == password1) {
b = true;
break;
}
}
}
if (b) {
System.out.println("登录成功!");
} else {
System.out.println("账号或密码错误!");
}
}
}
}
}
}
🍬🍬🍬🍬🍬🍬🍬🍬🍬🍬🍬🍬🍬🍬🍬🍬
******************************************************************************************
* 总结:
* 1.this代表当前类的对象,代表方法的调用者,通常用在构造器赋值,
* set方法赋值。当形参名和成员变量的名相同时,赋值操作。
* 2.封装,思想封装,把一堆重复执行的代码封装成方法。把一堆重复执行的
* 方法封装成一个类。
* 3.封装,代码层次的封装,所有的属性私有化。private,每个属性提供对应的
* setter和getter方法。
* 以后我们的赋值操作:
* 1.不再使用对象.属性的方式
* 2.使用构造器
* 3.setter方法
* 习惯:必须保证每个类都有一个无参构造器
*******************************************************************************************
* 总结:
* 1.this代表当前类的对象,代表方法的调用者,通常用在构造器赋值,
* set方法赋值。当形参名和成员变量的名相同时,赋值操作。
* 2.封装,思想封装,把一堆重复执行的代码封装成方法。把一堆重复执行的
* 方法封装成一个类。
* 3.封装,代码层次的封装,所有的属性私有化。private,每个属性提供对应的
* setter和getter方法。
* 以后我们的赋值操作:
* 1.不再使用对象.属性的方式
* 2.使用构造器
* 3.setter方法
* 习惯:必须保证每个类都有一个无参构造器
*******************************************************************************************
🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎🚎