1. Java仅支持单重继承。
  2. 如果一个类有父类,那么父类只能有一个,这条限制称为单重继承
  3. 子类不能继承父类的构造方法。
  4. 允许用已定义的类来定义一个新类,新类称作子类
  5. 在Java中如何判断两个对象各个属性(成员变量)的值是否相同?
    在Java中要判断两个对象的属性(成员变量)的值是否相同,需要在类声明中对equals方法进行覆盖,即重新修改这个方法,重写的equals方法中对对象中的值是否相等一一判断。
  6. 请说明父类与子类的联系与区别:
    大的更一般的类可以看作父类,包含在其中的特殊的、具体的类是子类。
    子类与父类的关系是:子类对象“is a”父类对象。从层次关系上讲,子类继承自父类,父类的对象引用可以指向子类对象,反之则不行。从成员上讲,子类可以比父类拥有更多的成员变量和成员方法,这些成员变量和成员方法是子类独有的,父类不具有也不能使用。但是反过来,父类中具有公共、保护权限的成员变量和成员方法同时也属于子类,子类可以使用。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    //父类对象引用指向子类对象
    class Animal {
    void eat() {
    System.out.println("Animal is eating");
    }
    }

    class Dog extends Animal {
    void eat() {
    System.out.println("Dog is eating");
    }
    }

    public static void main(String[] args) {
    Animal a = new Dog(); // 父类引用指向子类对象
    a.eat(); // 输出:Dog is eating
    }
  7. 判断父类变量指向的是不是子类实例:
    1
    2
    3
    if(a instanceof Dog){//判断父类变量指向的是不是子类实例
    Dog d=(Dog) a;//将父类变量转换成对应的子类对象
    }
  8. Java允许将一个子类的对象赋给父类的变量(子类对象可以作为父类对象使用),这称为对象转型(向上转型)
  9. 什么是继承:
    将一个已有类中的数据和方法保留,并加上自己特殊的数据和方法,从而构成一个新类。
  10. 简述通过继承,子类可以获得的好处:【难背】
    (1)子类可以拥有父类的所有属性和方法(2分);
    (2)也可以扩展原有代码、生成新的类、原有代码可以不必重写(1分)。
  11. 类A某个成员变量的类型是类B,则类Ahas a类B。
  12. 方法覆盖:要求子类定义方法所用的名字、返回类型及参数列表和父类中的方法使用的完全一样,也就是具有相同的方法签名,从逻辑上看就是子类方法中的成员方法将隐藏父类中的同名方法。
    名词解释:使用类的继承关系,可以从已有的类产生新的类。在原有特性的基础上,增加了新的特性。父类中原有的方法可能不能满足新的要求,因此需要修改父类中已有的方法。
  13. 重载的方法属于同一个类,覆盖的方法分属于父类、子类
  14. 简述关键字super的作用:【难背】
    如果子类重写了父类中的方法,但在子类中还想使用父类中被隐藏的方法,可以使用super关键字,另外,在子类的构造方法中也可以使用super关键字,其功能为调用父类的构造方法。
    使用super关键字时要注意两个问题:
    首先,使用super.method()调用父类中的方法method(),将执行父类方法中的所有操作,其中可能会包括一些原本不希望进行的操作,所以调用时要谨慎。
    其次,由继承性的机制可以知道,super.method()语句所调用的方法不一定是在父类中加以描述的,它也可能是父类从它的祖先中继承来的。因此,有可能需要按继承层次关系依次向上查询才能找到。
  15. 方法覆盖的两条原则:【难背】
    (1)覆盖方法的允许范围不能小于原方法。
    (2)覆盖方法所抛出的异常不能比原方法多。
  16. 如果一个抽象类除了抽象方法外什么都没有,则使用接口更合适。
  17. 抽象类可以包含抽象方法和非抽象方法。
  18. 用关键字final修饰的类是终极类,不能有子类。
  19. 接口及其实现的基础语法:
    1
    2
    3
    4
    5
    6
    7
    public interface A{
    public void method(){...}
    }

    class B implements A{
    public String s;
    }
  20. 什么是抽象类、抽象方法?在使用过程中有什么注意事项?【难背】
    定义时只定义了方法但没有定义具体实现的类称为抽象类,在Java中通过关键字abstract把一个类定义为抽象类。
    每一个未被定义具体实现的方法也用关键字abstract修饰,这样的方法称为抽象方法,只有抽象类才有抽象方法。
    在使用抽象类和抽象方法时要注意的事项有:不能用抽象类作为模板创建对象,必须定义抽象类的子类后,用子类作为模板才能创建实例。对于抽象方法不能进行调用,子类将抽象方法实现以后才可以调用。
  21. 接口中所有的方法都是抽象方法,没有方法体。
  22. 一个类可以实现多个接口,从而实现了多重继承。
    1
    2
    3
    class 类名 implements 接口1, 接口2, ..., 接口N {
    // 实现接口中的方法
    }
  23. 接口可以定义自己的成员变量和方法,但成员变量必须赋初值且不可改变(系统会自动添加final和static关键字)。
  24. 实现接口必须实现该接口的所有方法。
  25. 接口可以继承。
  26. 简述抽象类与接口的联系与区别:【难背】
    抽象类是指类中定义了方法但没有具体实现的类,抽象类代表一些基本行为,但又无法或不宜在这个类中对这些行为加以具体实现,而希望在子类中根据实际情况去实现。
    接口是体现抽象类功能的另一种方式,可将其想象为一个“纯”的抽象类,接口中所有的方法都是抽象方法,都没有方法体,接口与抽象类都用来定义多个类的共同属性。
    接口还可以实现与抽象类不同的功能,具体来说,Java不支持多重继承,一个类只能从唯一的一个类继承,但允许一个类实现多个接口,从而实现了多重继承的功能,并具有更加清晰的结构。
  27. 一个接口能够包含的元素有成员变量,默认修饰符是abstract成员方法,默认修饰符是static,final
  28. 子类中修改父类中已有的同名方法,称为方法覆盖/重写
  29. 同一个类中,具有不同签名的同名方法是重载方法。
  30. 接口中的抽象方法不能是私有或受保护的方法。
  31. Java中实现多重继承的机制是使用接口