继承
继承有个特点,就是子类无法访问父类的字段或者方法。例如java构造方法的特点 java中子类调用父类构造方法注意事项,类就无法访问类的name和age字段:
class {
name;
int age;
}
class {
hello() {
"Hello, " + name; // 编译错误:无法访问name字段
}
}
这使得继承的作用被削弱了。为了让子类可以访问父类的字段,我们需要把改为。用修饰的字段可以被子类访问:
class {
name;
int age;
}
class {
hello() {
"Hello, " + name; // OK!
}
}
因此,关键字可以把字段和方法的访问权限控制在继承树内部,一个字段和方法可以被其子类,以及子类的子类所访问,后面我们还会详细讲解。
2.super的使用
super关键字表示父类(超类)。子类引用父类的字段时java构造方法的特点,可以用super.。例如:
class {
hello() {
"Hello, " + super.name;
}
}
上面的代码执行会有编译错误,构造方法,无法调用的构造方法。
解析:任何class的构造方法java构造方法的特点,必须先构造发父类的构造方法。如果没有明确的调用父类的构造方法,编译器会自动帮我们加一句super(),所以类的构造方法实际上是这样
那么问题就出在父类即类没有默认的构造方法,子类即必须显示调用重载以后的构造函数,即
类中的写法为
总结:如果父类没有默认的构造方法,子类必须显示地调用super()并给出参数,让编译器定位到一个合适的构造方法。同时,子类不会继承任何父类的构造方法,子类默认的构造方法是编译器自动生成的,不是继承的