1、java通过继承实现代码的复用,被继承的成为父类或者超类(superclass),由继承而得到得到类称为子类(subclass)
2、一个父类可以有很多子类,但一个类只有一个直接父类。父类是所有子类的公共成员的集合,而每一个子类则是父类的特殊化
3、子类继承父类的成员变量和成员方法,同时修改父类的成员变量或重写父类的方法,还可以添加新的成员变量和成员方法。
class SubClass extends SuperClass
{
}
4、所有类都是java.lang.Object类的子类
5、子类的每个对象也是其父类的对象,这是继承的“即是”性质,
例如,程序员(subclass)继承于人类(superclass),所以在任何使用人类(superclass)实例的地方(例如让一个人吃东西),都允许使用程序员(subclass)(程序员也是人,所以也要吃东西)。
6、父类的对象不一定是他的子类的对象
例如请一个人编程,程序员(subclass)可以,但人类(superclass)不一定可以。
7、子类可以从父类那里继承所有非private的成员作为自己的成员。
package basics;
import java.util.jar.Attributes.Name;
class Person {
private String name ="doujiao";
protected int age = 100;
public Person() {
System.out.println("父类的构造方法被调用");
}
public Person(String name,int age) {
this.age=age;
this.name=name;
}
protected void show() {
System.out.println("姓名"+name+"年龄"+age);
}
}
class Student extends Person{
private String dep;
int age =158;
public Student(String xm,String de) {
age=550;
dep=de;
super.age=666;
System.out.println("子类中的成员变量age="+age);
System.out.println(name);//此处出错,代表子类无法继承父类的private成员
super.show();
System.out.println("系别为"+dep);
}
public Student() {
}
}
public class Testc{
public static void main(String[] args){
Student student = new Student("李武","信息系");
student.show();
}
}
8、java程序在执行子类的构造方法之前,会先调用父类中没有参数的构造方法,其目的是为了帮助继承自父类的成员做初始化操作,除非用super()去选择调用哪些构造方法,否则肯定调用无参构造方法。
9、构造方法是不能被继承的,但可以被子类调用
10、调用父类构造方法的super()语句必须写在子类构造方法的第一行,否则编译时将出现错误信息
11、在子类中访问父类的构造犯法,其格式为super(参数列表)。super可以重载,也就是说super()会根据参数的个数和类型,执行父类相应的构造方法。
12、super()与this()均在构造方法内的第一行,也就是由于这个原因,它们两个无法同时存在于同一个构造方法
13、与this一样,super指得也是对象,所以不能在static环境中使用,包括静态方法和静态初始化器(static语块)。