类的继承

2017-11-21  本文已影响0人  后来者2016
  1. 继承关系可以解决代码的重复问题。
  2. 单继承;不能多重继承,允许多层继承。
  3. 继承类图表示:实线箭头,箭头指向父类。
  4. 子类无法直接访问父类的私有属性,但可以间接访问(getter方法)。
  5. 子类对象实例化过程中,默认先调用父类的构造方法,再调用本类的构造方法。
  1. 父类和子类均为default权限
public class TestExtends {
    public static void main(String[] args) {
        Student stu = new Student();
        stu.fun();
    }
}
class Person {
    void print() {
        System.out.println("父类方法");
    }
    public void fun() {
        this.print();
    }
}
class Student extends Person {
    void print() {
        System.out.println("子类方法");
    }
}

输出为:子类方法
分析:此时print()方法被覆写,故调用的是子类的print()方法

  1. 父类为private权限、子类为default权限
public class TestExtends {
    public static void main(String[] args) {
        Student stu = new Student();
        stu.fun();
    }
}
class Person {
    // 添加private权限
        private void print() {
        System.out.println("父类方法");
    }
    public void fun() {
        this.print();
    }
}
class Student extends Person {
    void print() {
        System.out.println("子类方法");
    }
}

输出为:父类方法
分析:此时子类的print()方法并不是父类中private修饰的print()方法的覆写。
小结:父类方法如果用private修饰,则此方法不能被覆写。

区别点 方法重载 方法覆写
定义 方法名称相同,参数类型或个数不同 方法名称,参数名称,返回值类型全部相同
权限 无要求 子类中方法不能拥有比父类更严格的权限
范围 一个类中 继承类中
区别点 this super
属性方法 由近及远,先从本类找,若没找到再从父类找 直接从父类找
调用构造 调用本类构造,必须写在首行 调用父类构造,必须写在子类构造首行
其他 当前对象 --

注:因为 thissuper 关键字都可以调用构造方法,并且调用时都必须放在构造方法首选,故不能同时出现

  1. 类:不能有子类
  2. 属性:为常量。static final声明全局常量
  3. 方法:不能被子类所覆盖
上一篇 下一篇

猜你喜欢

热点阅读