Java 继承

  • 子类继承父类们所有的东西(但不能直接访问private成员)

  • Java所有类都继承自java.lang.Object类

  • Java所有的类都是单根继承

  • 子类构造函数默认第一句话都会区调用父类的构造函数

例如:

public class father {
    public void f1(){
        System.out.println("hello")}
    public static class Son extends father{
        public static void main(String[] args) {
            Son s = new Son();
            s.f1();
        }
    }
}

子类继承了父类的方法,所以在子类中可以使用公开的f 1()方法;

  • 对象也可以分成若干类,并且类别内的对象属性和方法都具有一定的共同点,将共同点提取出来,即形成了父类/基类/超类 (Parent class/Base class/Super class)

  • 而其他类也自动生成为子类、派生类 (Child class/Derived class)

  • 单继承原则:每个类都只能继承一个类

  • 如果不写extends,Java类都默认继承java.lang.Object类

  • Java所有类从java.lang.Object开始,构建出一个类型继承树

  • Object类里面默认就有clone、equals、finalize、getClass、hashCode、toString等方法

public class Base {
    private int num = 10;

    public int getNum(){
        return this.num;
    }
}
public class Derived extends Base{

    //int b = 20;
    /*public int getNum(){
        return this.b;
    }*/

    public static void main(String[] args) {
        Derived fd = new Derived();
        System.out.println(fd.getNum());
    }
}
  • 每个Java类都必须有构造函数,如果没有显式定义构造函数,Java编译器会自动为该类产生一个空的无形参构造函数,所以在main函数里定义了一个Derived的类,因为Derived类里面没有构造函数,所以编译器会产生一个空的构造函数;若Derived里面没有getNum()的方法,他便继承与Base里面的getNum()方法(子类可以通过父类的方法来访问父类的私有成员属性),在同样方法名和参数的情况下,本类的方法会比父类的方法优先级高。
public class A {
    public A(){
        System.out.println("11111");
    }
    public A(int a){
        System.out.println("22222");
    }
}

public class B extends A {
    public B(){
        //super();
        System.out.println("33333");
    }
    public B(int a){
        super(a);
        System.out.println("44444");
    }

    public static void main(String[] args) {
        B obj = new B();
        System.out.println("===========");
        B obj2  = new B(6);
    }
}

这两个的运行结果是:

11111

33333

========

22222

44444

·每个子类的构造函数的第一句话,都默认调用父类的无参数构造函数super(),除非子类的构造函数第一句话是super,而且super语句必须放在第一条,而且一个方法中不能有两个super,如果子类中有super语句,则按照子类的super语句执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值