java自学之路-day08

JAVA08

继承

l  概念

  1. 现实中子女继承父辈财产
  2. Java中继承描述类与类之间的关系
  3. Java中继承每个子类有父类所有的属性
  4. 员工是父类 各部门员工是子类
  5. 各部门员工是父类 各部门中的一种是子类

l  格式和使用

  1. extends关键字
  2. class 子类 extends 父类

l  优点

  1. 提高了代码复用性 例如员工姓名
  2. 是类与类之间有了关系 提供了多态的可能

l  注意事项

  1. 类只支持单继承只能有一个父类
  2. 多继承有安全隐患 例如 同一个变量名是到底是哪个的问题
  3. 支持多重继承 即允许有父类的父类 紧密连接性强

l  继承体系

  1. 父类 共性
  2. 子类 特性

l  继承子父类中成员变量的特点

  1. 成员变量子类自己有就调用自己的 没有的找父类
  2. 子类中使用super调用父类成员
  3. 子类叫派生类 父类叫超类

l  继承父类的方法

测试类调用子类对象方法时 子类有调用子类的方法 没有调用父类的方法

  1. 重载

方法名不同

  1. 重写覆盖

和父类方法一模一样 此时会调用子类的方法

用super. 来继承父类方法原有内容

  1. 举例

手机 智能手机

  1. 注意事项

a)         保证子类方法权限大于或等于父类方法

b)         四大权限 public protected default private

c)         返回值 函数名 函数类表一样

抽象类

l  概念

  1. 父类只知道子类有哪些方法不知道具体怎么实现
  2. 父类只是有 没有主体的方法 需要abstract修饰 父类也需要用abstract修饰
  3. 抽象类不能实例化 因为是实例化后调用抽象方法无法调用运行
  4. 特点
    1. 方法和类都需要别abstract修饰
    2. 抽象类不可以直接创建对象 实例化后调用方法没有意义
    3. 如果子类继承了抽象类 重写了一部分抽象方法 这个子类还是一个抽象类

继承了抽象类后,拥有了多个抽象方法 如果只重写了一部分 那么还是存在一些抽象方法 拥有抽象方法的类叫做抽象类,所以子类还是抽象类

  1. 抽象类可以存在抽象方法和普通方法

l  设计思想

  1. 抽象类的作用:继承的体系 保证功能的完整性
  2. 强制子类重写抽象方法

l  细节问题

  1. 抽象类一定是个父类
  2. 可以不写抽象方法可以定义有方法体的方法

为了让子类直接使用

  1. 不能和那些关键字一起使用

private  这样子类不能继承

final

static

练习

It公司员工模拟

总结

  1. 继承 现有类 父类 派生类 子类
  2. 子类拥有父类所有 super. 调用方法 或者建立对象调用方法 super.调用变量
  3. 继承紧密连接 耦合度高

低耦合高内聚是软件设计的一个基本原则,说的是在程序的各各模块中,尽量让每个模块独立,相关的处理尽量在单个模块中完成,就是俗话说的:该干嘛干吗去! 优点:能提降低各模块的之间的联系,减少“牵一发而动全身”的几率,提高开发效率,降低升级维护成本,也便于进行单元测试,提高软件质量。

  1. 只有Object没有父类
  2. 不能为了继承而继承 必须要有实际关系
  3. 抽象类
  4. 抽象类面试题:
  5.          抽象类中是否可以没有抽象方法?如果可以,那么,该类还定义成抽象类有意义吗?为什么?

         可以没有抽象方法,有意义,不会让其他人直接创建该类对象,适配器

接口

l  概念

  1. 功能的集合
  2. 比抽象类的跟抽象的类
  3. 特殊的抽象类
  4. 全部是抽象方法

l  定义

  1. 关键字 不再是class 而是 interface
  2. 文件扩展名任然是.class
  3. 不能定义带有方法体的方法
  4. 固定格式

public abstract 返回值类型 方法名字(参数列表);

  1. 成员变量必须常量
  2. 格式:public static final 数据类型 变量名=值

l  实现类

  1. 类和接口为实现关系
  2. 关键字 implements
  3. 必须靠实现类进行重写方法否则不能用

l  接口成员特点

  1. 成员变量

固定定义格式:

public static final 数据类型 变量名=值

权限

静态:可以直接被类名调用 类名.a

      最终:固定变量的值

        public static final 可以省略不写 但不等于没有 还可以选择性书写

  1. 成员方法

public abstract 可以不写,选择性书写 可以在大纲图上见到

但在实现类中必须要写 否会默认为default会缩小了权限

l  实现类还是一个抽象类

  1. 如果实现类没有全部实现接口方法那么是实现类还是一个抽象类
  2. 因为继承了接口就会继承抽象方法 如果有抽象方法没有完全实现就宝海了抽象方法,就成为了抽象类

l  多实现接口

  1. 一个类可实现多个接口
  2. Implements A,B
  3. 没有安全隐患 方法全是抽象的 没有功能主体 即使两个接口方法相同
  4. 但是两个方法不可以返回值不同而方法名相同

l  继承类的同时实现多个接口

 

  1. extends D implements A,B
  2. 接口的出现避免了单继承的局限性 父类中定义的实物基本功能 接口中定义事物的扩展功能

l  接口的多继承

  1. 接口之间是继承关系
  2. 可以是多继承
  3. 没有安全隐患 全是抽象方法
  4. 实现类必须重写所有接口的全部抽象方法
  5. Java中有多继承吗

a)         类没有多继承

b)         接口之间有多继承

l  接口思想

  1. 暴露出来的规则
  2. 降低了耦合性 设备与设备之间解耦
  3. 扩展了功能
  4. 面向接口编程 实现功能 我不实现 找人去实现(面向对象) 为了统一结果定义接口(面向接口)
  5. SUN公司提供JDBC接口 功能由厂家实现

l  接口和抽象的区别

  1. 抽象类 父类不能准确表述功能 因此就定义抽象方法 成为抽象类
  2. 接口  子类额外的功能 定义抽象类来增加额外功能
  3. Is a 。。。like a。。。
  4. 两种的选用

优先选择接口少用抽象类

定义子类行为又是共性的行为时用抽象类

多态

 

l  概述

  1. 继承 封装 多态 面向对象三大特征
  2. 学生既是人也是一个学生
  3. 一个子类对象可以给本类赋值也可以给父类赋值
  4. Person p=new Student();

Student s=new Student();

  1. 或者赋值给接口也可以
  2. 前提 是子父类关系和接口实现类关系
  3. 在使用多态后的父类引用变量调用方法时会调用子类重写后的方法

l  三种定义格式

  1. 抽象类型或者父类类型或者接口类型 变量=new 子类的对象();
  2. 多态调用方法方法必须运行子类重写的方法

l  多态成员方法和成员变量特点

  1. 成员变量参考父类是否有变量,如果有编译成功,否则编译失败,运行的时候是父类的变量值
  2. 运行成员方法编译时,参考的是父类是否有此方法,有就编译成功,否则编译失败,运行时,子类有方法就运行子类方法,否则运行父类方法
  3. 总结

方法

编译看父类运行看子类

变量

编译运行都看父类

l  Instanceof关键字

  1. 比较运算符
  2. 比较一个引用类型的变量是不是这个类型的对象
  3. 判断某个对象是否属于某个类型

l  多态转型

  1. Java强制数据类型的语言,参与运算的数据,需要保证类型的统一性
  2. 多态数据类型一致 则自动类型提升  
  3. 父类范围大 子类范围小 子类向上提升为父类类型 上转型(自动类型提升)
  4. 优点

可以调用子类父类的公共方法,公有内容

缺点

不能调用子类特有内容

  1. 父类转子类  父类范围大 子类范围小  父类强行转换成子类类型加括号

子类类型 子类变量=(子类类型)父类变量

 向下转型(强制转换类型)

l  练习:笔记本案例

进行笔记本类描述 实现笔记本使用usb鼠标和键盘

  1. usb接口 开启关闭功能
  2. 笔记本  开关机功能 使用usb接口设备的功能
  3. 外设    支持usb接口
  4. 笔记本面向usb接口 外设也面向usb 接口
  5. 事物分析

笔记本

开关机与外部无关 是内部私有方法

定义一个使用usb功能的方法参数是USB对象 即usb的实现类 即具体的一个外设  利用USB实例对象实现接口方法

Usb接口 开关闭功能 抽象方法

外设  工作与外部无关 是内部私有方法 支持usb接口 实现接口方法

 

posted @ 2017-07-13 08:10  Aier.S  阅读(125)  评论(0)    收藏  举报