第15 章 : Annotation注解
71 Annotation简介
JDK>=1.5
作用
1、减少程序配置的代码
2、进行结构化定义
以注解的形式实现程序开发
程序代码(资源调度)
资源:关系型数据库 + NoSQL系统 + 消息服务 + 数据服务
配置文件:数据库连接资源 + 其他连接资源
程序开发结构的历史
第一阶段:所有配置都写在程序代码中,不利于维护
第二阶段:引入配置文件,适用于配置项不多的情况
第三阶段:配置信息重新写回程序里,利用特殊标记与代码分离
@Override
@Deprecated
@SuppressWarnings
72 准确覆写
问题:
1、继承忘记写extends
2、覆写方法单词拼错
@Override 明确表示该方法是覆写方法
程序编译时检查错误,保证覆写准确性
class Resource{ public void connect(){ System.out.println("资源连接"); } } class Database extends Resource{ @Override public void connect(){ System.out.println("数据库资源连接"); } } class Demo{ public static void main(String[] args) { Database db = new Database(); // 调用子类的方法 db.connect(); // 数据库资源连接 } }
73 过期声明
@Deprecated
软件项目迭代开发过程中,可能有的地方考虑不周,不能直接删除这些操作
给一个过渡时间,老系统可以继续用,新项目不要用了
class Database{ @Deprecated public void connect(){ System.out.println("数据库资源连接"); } public void connection(){ System.out.println("新的方式:数据库资源连接"); } } class Demo{ public static void main(String[] args) { Database db = new Database(); db.connect(); /* 注: Demo.java使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 数据库资源连接 */ } }
74 压制警告
隐藏警告提示
class Database{ @Deprecated public void connect(){ System.out.println("数据库资源连接"); } } class Demo{ // 隐藏 deprecation 警告 @SuppressWarnings({"deprecation"}) public static void main(String[] args) { Database db = new Database(); db.connect(); // 数据库资源连接 } }
第16 章 : 多态性
75 多态性简介
多态是在继承的基础上扩展出来的概念,实现父子类之间的转换处理
Java中多态的两种实现模式
1、方法多态性
-方法重载:同一个方法名称可以根据传入的参数类型,个数的不同,实现不同功能的执行
-方法覆写:同一个方法,在不同子类中有不同的实现
2、对象多态性(父子之间转换处理)
-对象向上转型 父类 父类实例 = 子类实例 (自动转换)
-对象向下转型 子类 子类实例 = (子类)父类实例 (强制转换)
方法重载
class Demo{ public static void print(){ System.out.println("默认输出"); } public static void print(String message){ System.out.println(message); } public static void main(String[] args) { Demo.print(); // 默认输出 Demo.print("自定义输出"); // 自定义输出 } }
方法覆写
class Database{ public void connect(){ System.out.println("数据库连接"); } } class MySQLDatabase extends Database{ @Override public void connect(){ System.out.println("MySQL数据库连接"); } } class RedisDatabase extends Database{ @Override public void connect(){ System.out.println("Redis数据库连接"); } } class Demo{ public static void main(String[] args) { Database db = null; db = new Database(); db.connect(); // 数据库连接 db = new MySQLDatabase(); db.connect(); // MySQL数据库连接 db = new RedisDatabase(); db.connect(); // Redis数据库连接 } }
76 对象向上转型
向上转型的优势:参数可以统一设计(接收或返回参数统一性)
重载也可以实现相同的效果,如果子类过多,代码不利维护
class Database{ public void connect(){ System.out.println("数据库连接"); } } class MySQLDatabase extends Database{ @Override public void connect(){ System.out.println("MySQL数据库连接"); } } class RedisDatabase extends Database{ @Override public void connect(){ System.out.println("Redis数据库连接"); } } class Demo{ // 接收统一的参数 Database 和其子类 public static void connect(Database db){ db.connect(); } public static void main(String[] args) { // 相当于 Database db = new Database() Demo.connect(new Database()) ; // 自动向上转型 相当于 Database db = new MySQLDatabase() Demo.connect(new MySQLDatabase()) ; // 自动向上转型 相当于 Database db = new RedisDatabase() Demo.connect(new RedisDatabase()) ; } }