Java - JavaSE - 面向对象

面向对象

构造方法

默认构造方法的 super() 调用

父类 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 类。

接口

接口的根类是 Object 类?

不是,这篇文章很详细说明了。举个直观例子说明:

权限修饰符

四种修饰符:private,(default),protected,public。

修饰词 本类 同一个包的类 子类 任何地方
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);
    }
}

猜你喜欢

转载自www.cnblogs.com/chenxianbin/p/11853753.html