dijiuzu

 

20220719 第九组 于芮 面向对象——挺抽象2(第十二天)

 
小白成长记——第十二天
 
今天是继续学习面向对象的第二天,我们更加系统的学习了封装的含义和用法,对每个人的理解要求很高,每句代码都很抽象,稍微一走神,就错过了,还是要好好学习,努力跟上老师的步伐!来看看今天的学习笔记吧!

this关键字(代表当前类的对象)--不能用static修饰的方法中
当使用对象调用属性时,调用的是成员变量
this既然是方法的调用者,实际上和对象是一样的
既可以调属性,也可以调方法
通常用在赋值,构造器的使用

面向对象的特征:封装
1.代码层面
a.属性私有化,所有的属性都使用private封装
b.提供一个公有的set,get方法
c.getter方法能够按照客户的期望返回格式化的数据
d.dsetter方法可以限制和检验setter方法转入的参数是否合法,隐藏对象的内部结构
正确定义一个类
1.所有的属性私有化
2.每个属性都有对应的setter,getter方法


2.思想层面

什么时候用构造器赋值?
看创建对象是为了干什么?
如果说创建对象仅仅是为了调用这个类的方法,建议使用无参构造器
如果说创建对象的时候需要使用到对象的某个属性,可以使用构造器赋值


空指针异常
什么情况下会出现空指针异常:
引用数据类型的默认值(初始值是null,空引用)

3个异常:
1、数组下标越界
2、内存溢出(错误)
3、空指针


总结:
1.this代表当前类的对象,代表方法的调用者,通常用在构造器赋值,
set方法赋值。当形参名和成员变量的名相同时,赋值操作。
2.封装,思想封装,把一堆重复执行的代码封装成方法。把一堆重复执行的
方法封装成一个类。
3.封装,代码层次的封装,所有的属性私有化。private,每个属性提供对应的
setter和getter方法。
以后我们的赋值操作:
1.不再使用对象.属性的方式
2.使用构造器
3.setter方法

今天的学习内容相对于来说不是很多,大部分时间都是老师带领我们进行实践,来看看今天的学习成果吧,今天的学习成果是一个简单的银行开户系统,可以简易完成开户、存款、取款,下面是今天的完整的代码了,一起看看吧!

public class Person {
    String name;
    int age;
    Debit debit;
    //构造器
    public Person(String name,int age){
        this.name=name;
        this.age=age;
    }
    //保证每个类都有无参构造器
    public Person(){

    }
    public void openAccount(Debit debit){
        this.debit=debit;
        debit.show();
        this.show();


    }
    public void show(){
        System.out.println("姓名:"+name+"年龄:"+age);
    }
    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 boolean valid(int pass){
        if(pass== debit.passWord){
            return true;
        }
            return false;
    }
}
public class Demo {
    public static void main(String[] args) {
        Person person=new Person("张三",23);
        Debit debit=new Debit("33333333",111111,100);
        person.openAccount(debit);
        person.in(151);
        person.out(200);
        person.out(100);

    }
 1 package lianxi;
 2 
 3 import java.util.Scanner;
 4 import java.util.function.DoubleUnaryOperator;
 5 
 6 public class Demo2 {
 7     public static void main(String[] args) {
 8         Person person=new Person("张三",25);
 9         Scanner in=new Scanner(System.in);
10         for (;;){
11 
12             System.out.println("请选择功能:1.开户2.存款3.取款");
13             String flag=in.next();
14             switch (flag){
15                 case "1":
16                     System.out.println("请输入密码:");
17                     int  password=in.nextInt();
18                     System.out.println("请输入余额:");
19                     double balance=in.nextDouble();
20                     Debit debit=new Debit("333333",password,balance);
21                     person.openAccount(debit);
22                     break;
23                 case "2":
24                     System.out.println("请输入密码:");
25                     int pass=in.nextInt();
26                     boolean b=person.valid(pass);
27                     if(b){
28                         System.out.println("请输入存款金额:");
29                         double money=in.nextDouble();
30                         person.in(money);
31                     }else {
32                         System.out.println("密码有误,无法存款!");
33                     }
34 
35                     break;
36                 case "3":
37                     System.out.println("请输入密码:");
38                     int pass1=in.nextInt();
39                     boolean b1=person.valid(pass1);
40                     if(b1){
41                         System.out.println("请输入取款金额:");
42                         double money=in.nextDouble();
43                         person.out(money);
44                     }else {
45                         System.out.println("密码有误,无法取款!");
46                     }
47 
48 
49             }
50 
51 
52         }    }
53 }
 1 package lianxi;
 2 
 3 public class Debit {
 4     String cardId;
 5     int  passWord;
 6     double balance;
 7     public Debit(){
 8 
 9     }
10     public Debit(String cardId,int  passWord,double balance){
11         this.cardId=cardId;
12         this.passWord=passWord;
13         this.balance=balance;
14     }
15     public void  show(){
16         System.out.println("卡号:"+cardId+"余额"+balance);
17     }
18 
19 }

 

posted on 2022-07-19 20:01  于芮  阅读(32)  评论(0编辑  收藏  举报

导航