Java面向对象设计编程

this关键字

  1. 只能在构造方法中使用this调用其他的构造方法,不能在成员方法中使用。
  2. 只能在构造方法中使用this调用其他的构造方法,不能在成员方法中使用。
  3. 不能在一个类的两个构造方法中使用this互相调用。

静态变量

  1. 在一个Java类中,可以使用static关键字来修饰成员变量,该变量被称作静态变量。静态变量被所有实例共享,可以使用“类名.变量名”的形式来访问,也可以通过类的实例对象来访问。
  2. 注意:static关键字只能用于修饰成员变量,不能用于修饰局部变量,否则编译会报错。

静态方法

  1. 在实际开发时,开发人员有时会希望在不创建对象的情况下就可以调用某个方法,换句话说也就是使该方法不必和对象绑在一起。
  2. 要实现这样的效果,只需要在类中定义的方法前加上static关键字即可,通常称这种方法为静态方法。同静态变量一样,静态方法可以使用“类名.方法名”的方式来访问,也可以通过类的实例对象来访问。
  3. 注意:在一个静态方法中可以直接访问用static修饰的成员,原因在于没有被static修饰的成员需要先创建对象才能访问,而静态方法在被调用时可以不创建任何对象。

静态代码块

  1. 在Java类中,使用一对大括号包围起来的若干行代码被称为一个代码块,用static关键字修饰的代码块称为静态代码块。当类被加载时,静态代码块会执行,由于类只加载一次,因此静态代码块只执行一次。在程序中,通常会使用静态代码块来对类的成员变量进行初始化。
  2. image-20221027141057253

课堂练习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package com.pujunming.nsusoft.BankDemo;

/**
* Created by Intellij IDEA.
*
* @author Pu_Junming
* @create 2022/10/27 14:17
*/

public class Bank {
// 银行名称
static String bankName;
// 用户姓名
private String name;
// 用户密码
private String password;
// 账户余额
private double balance;
// 交易额
private double turnovers;
// 提示语
static void welcome(){
System.out.println("-------------------------" + "Welcome to " + bankName + "-------------------------");
}
// 构造方法 开户
public Bank(String name, String password, double turnovers){
this.name = name;
this.password = password;
this.turnovers = turnovers;
this.balance =turnovers - 10;
System.out.println(name + "开户成功,账户余额" + balance);
}

// 存款
public void deposit(double turnovers){
balance = balance + turnovers;
System.out.println(name + "您好,你的账户以存入" + balance + "元" + "当前余额" + balance + "元");
}

// 取款
public void withdrawal(String password,double turnovers){
if (this.password != password){
System.out.println("您输入的密码错误!");
return;
}
if (balance - turnovers >= 0){
balance = balance - turnovers;
System.out.println(name + "您好,您的账户余额已取出" + turnovers + "元,当前余额" + balance + "元");
}else {
System.out.println("对不起,账户余额已不足!");
}
}
static void welcomeNext(){
System.out.println("请携带好随身财物,欢迎下次光临"+ bankName);
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.pujunming.nsusoft.BankDemo;

/**
* Created by Intellij IDEA.
*
* @author Pu_Junming
* @create 2022/10/27 15:10
*/
public class TestDemo {
public static void main(String[] args) {
Bank.bankName = "China Merchants Bank(CMB)";
Bank.welcome();
Bank bank = new Bank("小李", "654321",100.00);
// 存款
bank.deposit(500.00);
// 密码错误
bank.withdrawal("123456" , 200.00);
// 密码正确,余额不足
bank.withdrawal("654321" , 2000.00);
// 密码正确,余额足够
bank.withdrawal("654321" , 200.00);
Bank.welcomeNext();
}
}
package com.pujunming.nsusoft.BankDemo;

/**
* Created by Intellij IDEA.
*
* @author Pu_Junming
* @create 2022/10/27 15:10
*/
public class TestDemo {
public static void main(String[] args) {
Bank.bankName = "China Merchants Bank(CMB)";
Bank.welcome();
Bank bank = new Bank("小李", "654321",100.00);
// 存款
bank.deposit(500.00);
// 密码错误
bank.withdrawal("123456" , 200.00);
// 密码正确,余额不足
bank.withdrawal("654321" , 2000.00);
// 密码正确,余额足够
bank.withdrawal("654321" , 200.00);
Bank.welcomeNext();
}
}

输出效果

输出效果