在java中使用extends关键字来表示继承关系。 当创建一个类时,总是在继承,如果在类中声明中没有extends关键字,就总是隐式地从java.lang.Object类继承而来的,所以Object是所有类的元类,
class 子类名称 extends 父类名称
例如:
class Person {
public Person() {
}
}
class Man extends Person {
public Man() {
}
}
(1)只允许单继承 不可以多继承 (2)允许多层继承 (3)除了Object外,所有类实际上都会存在一个父类。
privite修饰的字段无法被子类访问 protected修饰的字段可以被子类访问
当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。涉及到成员变量的修饰符,具体的原则如下: (1). 能够继承父类的public和protected成员变量;不能够继承父类的private成员变量; (2). 对于缺省修饰符的成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承; (3). 对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。
(1) 能够继承父类的public和protected成员方法;不能够继承父类的private成员方法; (2) 对于缺省修饰符的成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承; (3) 对于子类可以继承的父类成员方法,如果在子类中出现了方法名称相同的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。 (4)子类访问权限必须大于等于父类。 (5)类方法static是隐藏父类的方法。
(1)子类是不能够继承父类的构造器,但是要注意的是,如果父类的构造器都是带有参数的,则必须在子类的构造器中显示地通过super关键字调用父类的构造器并配以适当的参数列表。 如果父类有无参构造器,则在子类的构造器中用super关键字调用父类构造器不是必须的,如果没有使用super关键字,编译器会自动调用父类的无参构造器。
调用父类的方法或者成员