MENU

继承

June 5, 2018 • Read: 2305 • Java阅读设置

1.extends关键字

class Person{
    int name;
    int age;
}
class Studetn extends Person{
    int score;
}
...

2.继承的限制

  • 在Java中只允许单继承
  • 子类不能直接访问父类的私有成员

3.子类对象实例化

在子类对象实例化之前,先调用父类中的构造方法,之后调用子类的构造方法,如果多层继承,永远先调用“最老”的类中构造方法

class Father{
    Father(){
        System.out.println("父类构造方法被调用");
    }
}
class Son extends Father{
    Son(){
        System.out,println("子类构造方法被调用");
    }
}
public static void main(String args[]){
    Son s = new Son();
    //父类构造方法被调用
    //子类构造方法被调用
    
}

4.方法重写

  • 在继承中,存在着重写的概念,其实就是子类定义了和父类同名的方法
  • 定义:方法名称相同,返回值类型相同,参数相同
class A{
    public void tell(){
        System.out,println("我是A的tell()方法");
    }
}
class B extends A{
    public void tell(){//重写
        System.out,println("我是B的tell()方法");
    }
}
public static void main(String args[]){
    B b = new B();
    b.tell();//我是B的tell()方法
}
  • 重写限制:子类重写的方法不能拥有比父类更加严格的访问权限
  • 访问权限:private < default < public

5.super关键字

  • 强行调用父类方法的执行
class A{
    public void tell(){
        System.out,println("我是A的tell()方法");
    }
}
class B extends A{
    public void tell(){//重写
        super.tell();//super关键字调用父类的tell方法
        System.out,println("我是B的tell()方法");
    }
}
public static void main(String args[]){
    B b = new B();
    b.tell();
    //我是A的tell()方法
    //我是B的tell()方法
}
  • super不一定在重写中使用,也可以表示那些方法时从父类继承而来的

6.重写与重载的区别

NO区别点重载重写
1单词OverLoadingOverriding
2定义方法名称相同,参数的类型或个数不同方法名称、参数类型、返回值类型全部相同
3权限对权限没有要求被重写的方法不能拥有比父类更加严格的权限
4范围发生在一个类中发生在继承中
Last Modified: February 8, 2020
Archives Tip
QR Code for this page
Tipping QR Code
Leave a Comment