Head First Java 总结(五)

来源:互联网 发布:linux 服务编程 编辑:程序博客网 时间:2024/05/16 10:34

第七章 继承与多态

继承

找到几个类中共同的部分,提取出新的类,将其作为父类,将这几个类以继承的关系连接到父类,再覆盖抽取到父类中的方法,以此提高代码的重用性,使代码简洁。

判断是否应该继承

判断方法:IS-A与HAS-A检测
例如:判断Tiger与Animal是否是继承关系
Tiger is a Animal. 说得通,是继承关系

判断book与bookstores是否是继承关系
book is a bookstores. 说不通
bookstores has a book. 书店里有书说得通
book类似于实例变量,也可理解为引用

IS-A 继承关系
HAS-A 引用关系

在子类中引用父类的方法

使用super关键字,super.fuction();

public class Animal{    public void eat(){    System.out.println("eat meats");    }}public class Tiger extends Animal{    public void eat(){        super.eat();        System.out.println("rabbits");    }}

子类能够继承哪些东西

父类可通过存取权限决定子类是否能够继承某些特定的成员

  • public类型的成员会被继承
  • private类型的成员不会被继承

什么场合使用继承

  • 某个类比父类更具有特定意义时使用继承
    例如:金毛是一种特定品种的狗,从狗中扩充出金毛是合理的

  • 在行为程序应该被多个相同基本类型类共享时
    例如:金毛,泰迪,哈士奇都需要吃东西和睡觉,将这些共性的功能放在父类中

继承的意义

  • 避免了重复的程序代码
  • 定义出共同的协议(子类拥有父类的全部public方法)

    多态

    父类引用指向子类对象

  • 对象声明,创建,与赋值的3个步骤

Dog myDog=new Dog();

1 声明一个引用变量:Dog myDog
2 创建对象:new Dog();
3 连接对象和引用 =

多态:Animal myDog=new Dog();

如何防止某个类被继承

  1. 存取控制
  2. 使用final修饰符,表示它是继承树的末端,不能被继承
  3. 让类只拥有private的构造程序

防止特定方法被覆盖

将该方法用final修饰