Java自学小白——面向对象进阶课程学习2

Java面向对象进阶二

一、包

  • 什么是包?
    •  包是用来分门别类的管理各种不同类,类似于文件夹、建包利于程序的管理和维护

    • 同一个包下的类可以互相访问
    • 不同包下的类,必须导包才可以访问
      • 导包的格式:import 包名.类名;
    • 同一个类中可以使用多个同名的类,但是默认只能导入一个,其他用包名.类名 

二、权限修饰符

  • 什么是权限修饰符
    • 控制一个成员能偶被访问的范围的
    • 可以修饰成员变量、方法、构造器、内部类
  • 权限修饰符的分类和具体作用范围:
  • 四种范围由小到大private -->  缺省 --- > protected ---> public

三、final关键字

  • 作为最终的意思,可以修饰方法,变量,类

四、常量

  • 常量是public static final修饰的成员变量 
  • 常量命名规范:英文单词全部大写,多个单词下划线连接起来
  • 特点:有且仅能被赋值一次
  • 作用:
    • 做系统配置信息
    • 做信息标志和分类

五、枚举

  • 枚举是Java中一种特殊的类型
  • 作用:是为了做信息的标志和信息的分类
  • 定义枚举类的格式  
  • 特征

    

六、抽象类

  • 如果一个类中的某个方法的具体实现不能确定,就可以声明称abstract修饰的抽象方法(不写方法体),则这个类必须用abstract修饰,被称为抽象类
  • 声明格式
  • 一个类如果继承了抽象类,那么这个类必须重写抽象类的全部抽象方法,否则在这个类也必须定义成抽象类
  • 案例:
    • 抽象父类:



    • 白金卡子类:
    • 银卡子类:银卡子类和白金卡子类在实现上是一样的,代码重复性较高,改进空间较大
    • 测试类(main方法):
      •   
  •  抽象方法特点
    • 有得有失:得到抽象方法,失去了创建对象的能力
    • 类有的成员(成员变量、方法、构造器)抽象类都具备
    • 抽象类中不一定含有抽象方法,有抽象方法的类一定是抽象类
    • 不能用abstract修饰变量、代码块、构造器
  • final和abstrac的关系
    • 互斥关系
    • abstract定义的抽象类作为模板让子类继承,final定义的类不能被继承
    • 抽象方法定义通用功能让子类重写,final定义的方法子类不能重写
  • 抽象类应用知识:模板方法模式
    • 案例
      • 实现代码
        •  抽象的账户类Account作为父类模板

           1 public abstract class Account {
           2     private String cardId;
           3     private double balance; //余额
           4     private String passWord;
           5 
           6     //需要被子类重写的抽象方法
           7     public abstract void Interest(double balance);
           8 
           9     //此方法用于登录验证
          10     public final void JoinAccount (Scanner sc){
          11         while (true) {
          12             System.out.println("输入您的卡户账号与密码(以回车键结束)");
          13             String r = sc.next();
          14             String p = sc.next();
          15             if (r.equals(this.cardId)) {
          16                 if (p.equals(this.passWord)){
          17                     System.out.println("恭喜你登录成功");
          18                     break;
          19                 }else{
          20                     System.out.println("密码错误请检查后重新输入,");
          21                 }
          22             }else{
          23                 System.out.println("对不起,账户中并没有这个账户,请检查后重新输入");
          24             }
          25         }
          26     }
          27     
          28     //无参构造器
          29     public Account() {
          30     }
          31     
          32     //有参构造器
          33     public Account(String cardId, double balance, String passWord) {
          34         this.cardId = cardId;
          35         this.balance = balance;
          36         this.passWord = passWord;
          37     }
          38     
          39     //三个成员变量的getter,setter方法
          40     public String getCardId() {
          41         return cardId;
          42     }
          43 
          44     public void setCardId(String cardId) {
          45         this.cardId = cardId;
          46     }
          47 
          48     public double getBalance() {
          49         return balance;
          50     }
          51 
          52     public void setBalance(double balance) {
          53         this.balance = balance;
          54     }
          55 
          56     public String getPassWord() {
          57         return passWord;
          58     }
          59 
          60     public void setPassWord(String passWord) {
          61         this.passWord = passWord;
          62     }
          63 }

           

        • 活期账户子类重写Interest方法
        •  

           

        • 定期账户子类重写Interest方法

        •  
        • Test类(main方法)
        •  

           

    • 模板方法建议使用final修饰

 七、接口

  • 什么是接口
    • 接口也是一种规范
  • 接口的定义与特点:接口关键字用interface来定义
    •  定义:public interface 接口名{}
    • 特点:
      • JDK 8之前全部是抽象方法,常量
      • JDK 8开始之后新增了三种方法
        • 默认方法:default修饰,实现类对象调用
        • 静态方法:static修饰,必须当前接口名调用
        • 私有方法:private修饰,只能在接口内部被调用
  • 接口的用法:
    • 实现接口的类叫实现类

    • 接口可以被类单实现,也可以被类多实现

  •  接口实现的注意事项:
  • 接口与接口的关系:多继承,一个接口可以同时继承多个接口
posted @ 2022-03-22 22:14  Ppotato3  阅读(38)  评论(0)    收藏  举报