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修饰,只能在接口内部被调用
- 定义:public interface 接口名{}
- 接口的用法:
-
实现接口的类叫实现类
-
接口可以被类单实现,也可以被类多实现
- 接口实现的注意事项:
- 接口与接口的关系:多继承,一个接口可以同时继承多个接口