继承的概念
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
类的继承格式
在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下:
class 父类 {
}
class 子类 extends 父类 {
}
父类又叫超类,基类,子类又叫派生类。在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。
细节:
1. 子类继承了所有属性和方法,但是私有属性不能在子类直接访问,要通过公共的方法区访问。
2. 子类必须调用父类的构造器完成父类的初始化。//隐藏了super默认调用父类无参构造器
3. 当创建子类对象时,不管使用子类的那个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过。
4. 如果希望指定去调用父类的某个构造器,则显式的调用一次。super(参数列表)
5. super在使用时,需要放在构造器的第一行。(super只能在构造器中使用,this同理)
6. super()和this()都只能放在构造器的第一行,因此这两个方法不能共存在一个构造器中。
7. java所有类都是object类的子类,object是所类的基类。
8.父类构造器的调用不限于直接父类,将一直往上追溯到object类(顶级父类)。
9. 子类最多只能继承一个父类,java是单继承机制,如何让A继承B和C?可以先让BC先有继承关系。
final 关键字
final 可以用来修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和类。
final 含义为 "最终的"。
使用 final 关键字声明类,就是把类定义定义为最终类,不能被继承,或者用于修饰方法,该方法不能被子类重写:
-
声明类:
final class 类名 {//类体}
-
声明方法:
修饰符(public/private/default/protected) final 返回值类型 方法名(){//方法体}
注: final 定义的类,其中的属性、方法不是 final 的。
extends关键字
在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。
public class Animal {
private String name;
private int id;
public Animal(String myName, int myid) {
//初始化属性值
}
public void eat() { //吃东西方法的具体实现 }
public void sleep() { //睡觉方法的具体实现 }
}
public class Penguin extends Animal{
}
implements关键字
使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。
public interface A {
public void eat();
public void sleep();
}
public interface B {
public void show();
}
public class C implements A,B {
}