2022-07-19 第十小组 石晓荟

                                                    **JAVA基础知识进阶02**

学习心得:
经过这几天的Java基础学习,我个人认为跟的有点吃力,尤其是讲解完一个案例,我希望晚自习老师可以给留点时间让我们自己多理解白天学的知识,不然新知识越来越多,旧知识还没有完全消化
知识总结:
1.构造器的回顾:

  • 必须创建无参构造器,有参构造器可建可不建

  • 类与类之间的has关系

2.this 关键字

  • this是关键字

  • this代表的是当前类的对象,this代表的是当前方法的调用者

  • this既然是代表方法的调用者,它实际上和对象的作用是一样的

  • 既可以调属性,也可以调方法

  • 一个类中可以有什么?

  • 属性,方法,构造器

  • this不能用在static方法中。

  • 开发中,this通常用在什么位置!

  • 通常用在赋值,构造器赋值。

例子:定义一个Person 类,并实现开户,存取余额等功能
定义一个person类

public class Person {

String name;
int age;

Debit debit;

public Person() {
}

public Person(String name, int age) {
    this.name = name;
    this.age = age;
}

public void openAccount(Debit debit) {
    this.debit = debit;
    // 开户成功,显示一下开户信息
    debit.show();
    show();
}

public void in(double money) {
    // 存款:修改余额并且重新赋值
    debit.balance += money;
    System.out.println("存款成功!余额为:" + debit.balance);
}

public void out(double money) {
    // 取款:修改余额并且重新赋值
    if(money <= debit.balance){
        debit.balance -= money;
        System.out.println("取款成功!余额为:" + debit.balance);
    }else {
        System.out.println("余额不足!余额为:" + debit.balance);
    }
}

public void show() {
    System.out.println("姓名:" + name + ",年龄:" + age);
}

public boolean valid(int pass){
    if(pass == debit.password){
        return true;
    }
    return false;
}`
点击查看代码
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Person person = new Person("张三",25);
        for(;;){
            System.out.println("请选择功能:1.开户  2.存款  3.取款");
            String flag = sc.next();
            switch (flag) {
                case "1":
                    System.out.println("请输入账户密码:");
                    int password = sc.nextInt();
                    System.out.println("请输入余额:");
                    double balance = sc.nextDouble();
                    Debit debit = new Debit("654987",password,balance);
                    person.openAccount(debit);
                    break;
                case "2":
                    System.out.println("请输入密码:");
                    int pass = sc.nextInt();
                    boolean b = person.valid(pass);
                    if(b){
                        System.out.println("请输入存款金额:");
                        double money = sc.nextDouble();
                        person.in(money);
                    } else {
                        System.out.println("密码有误,无法存款!");
                    }
                    break;
                case "3":
                    System.out.println("请输入密码:");
                    int pass1 = sc.nextInt();
                    boolean b1 = person.valid(pass1);
                    if(b1){
                        System.out.println("请输入取款金额:");
                        double money = sc.nextDouble();
                        person.out(money);
                    } else {
                        System.out.println("密码有误,无法取款!");
                    }
                    break;
            }
        }
    }
3.封装 面向对象的特征:封装
  • 1.代码层面

  •  (1)属性私有化,所有的属性都要使用private封装
    
  •  (2)提供一个公有的set,get方法
    
  •  getter方法能够按照客户的期望返回格式化的数据
    
  •  setter方法可以限制和检验setter方法传入的参数是否合法
    
  •  隐藏对象的内部结构
    
  • 正确定义一个类

  •  (1)所有的属性私有化
    
  •  (2)每个属性都有对应的setter、getter方法
    

`public class Dog {

private String color;
private int age;

public String getColor() {
    return color;
}

public void setColor(String color) {
    this.color = color;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public Dog(){}

public Dog(String color,int age){
    this.color = color;
    this.age = age;
}

public void show() {
    System.out.println(color + "," + age);
}`
posted @ 2022-07-19 21:03  Romantic_SXH  阅读(38)  评论(0)    收藏  举报