父类 SuperClass 和 子类 SubClass,当子类的没有写构造方法的时候,编译会默认追加注释行代码,参看代码
class SuperClass {
public SuperClass() {
System.out.println("Super");
}
}
class SubClass extends SuperClass {
//public SubClass() {
// super();
//}
}
注释行代码写与否都会输出下列的结果 output: Super
public class Test01 {
public static void main(String[] args) {
//测试证明,子类如果不重写,编译器也会默认写上 super() 这一行代码
SubClass subClass = new SubClass();
}
}
Object 类是 sun 公司提供的根类,所有类都默认是继承 Object 类,其中就有抽象类,所以答案是可以。举个例子:
无论是 java 自带的类库还是自己新建的抽象类,无一例外继承了 Object 类。
不是,这篇文章很详细说明了。举个直观例子说明:
修饰词 | 本类 | 同一个包的类 | 子类 | 任何地方 |
---|---|---|---|---|
private | √ | × | × | × |
(default) | √ | √ | × | × |
protected | √ | √ | √ | × |
public | √ | √ | √ | √ |
如果 ModifierTest01 和 ModifierTest02 不在同一个包,只能访问到 height 和 id 属性。
package javase.modifier;
public class ModifierTest01 {
private int age = 1;
int count = 2;
protected int height = 3;
public int id = 4;
}
package javase;
public class ModifierTest02 extends ModifierTest01 {
public static void main(String[] args) {
ModifierTest02 test02 = new ModifierTest02();
System.out.println(test02.height);
System.out.println(test02.id);
}
}
原文:https://www.cnblogs.com/chenxianbin/p/11853753.html