java笔记 类的继承 继承类对象的创建

一. 子类继承父类的调用关系顺序

在java中没有多重继承
也就是说 一个子类只能继承一个父类,不能类C同时继承类A和类B
调用关系同等与C++,继承关键字extends

class text1
{
    int X, Y;

    public text1()
    {
        X = 0;
        Y = 0;
        System.out.println("无参text1");
    }

    public text1(int x, int y)
    {
        X = x;
        Y = y;
        System.out.println("有参text1");
    }

    public String toString()
    {
        return (this.X + " " + this.Y);
    }

}

class text2 extends text1
{
    int Z ;

    public text2()
    {
        int Z = 0;   /// 利用2 调用 1 的xy
        System.out.println("无参text2");
    }

    public text2(int z)
    {
        Z = z;
        System.out.println("有参text2");
    }
}
public class text
{
    public static void main(String args[])
    {
        text2 t2 = new text2();
    }
}

在text类中,我们创建一个text2,继承text1, 先调用text1的构造函数,再调用text2的构造函数
在这里插入图片描述

二.继承成员

在上面的例子中,text2只写了一个Z
如果我们给text1的X,Y赋值,再用text2的对象调用X,Y

public class text
{
    public static void main(String args[])
    {
        text1 t1 = new text1(1, 2);
        text2 t2 = new text2();
        System.out.println(t2.X + " " + t2.Y );
    }
}

在这里插入图片描述
可以看到 t1 调用了有参的构造函数
其次通过 t2 调用的X,Y都是 t2 自己继承 text1 的无参构造函数里面的X,Y
并不是 t1 赋值后的X,Y
所以t2并不能继承t1的x,y,只是有了text1中的成员属性x,y

三.调用父类的构造函数及子类调用父类的构造函数

我们现在补全text2的构造函数

public text2()
    {
        int X = 0;
        int Y = 0;
        int Z = 0;
        System.out.println("无参text2");
    }

    public text2(int x, int y, int z)
    {
    	X = x;
    	Y = y;
        Z = z;
        System.out.println("有参text2");
    }

改写主函数

public class text
{
    public static void main(String args[])
    {
        text2 t2 = new text2(2, 3, 4);
        System.out.println(t2.toString());
    }
}

在这里插入图片描述
我们又能发现,不管 t2 是有参还是无参,都会调用 text1 的无参构造函数
**使用 t2 调用 toString 函数时,打印的X,Y也是给 t2 赋值的x,y **

四. 默认构造函数 及 父类无参构造函数的重要性

主函数

public class text
{
    public static void main(String args[])
    {
        text2 t2 = new text2(2, 3, 4);
    }
}

1. 删除父类无参构造函数
在这里插入图片描述
会报错


2. 删除父类有参的构造函数

在这里插入图片描述
会正常运行


3.都删除
在这里插入图片描述
只调用text2的有参


这说明java中如果你构造函数一个都没写,系统会有默认的函数,只调用子类自身的构造函数
但是只写了一个有参的构造函数,系统会报错
如果只写了一个无参的构造函数,没有有参的,也能运行

所以以后把无参构造函数都写上

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值