Java学习里程-----Java基础_12构造方法与Object类

一、构造方法

啥是构造方法,构造什么玩意?

我们百度百科一下,看看官方是如何去描述的。

可以看得出来,构造方法是每一个类都有的方法,我们每次创建对象,一般都是通过构造方法去完成,也就是说,这个是每个类的最重要的方法,没有它,我们就没有办法实例化对象。构造方法也被叫做构造器。而且每一个类至少有一个构造方法。

也正是因为这样,它是一种特殊的方法。下面让我们来揭开她特殊的面纱。

二、构造方法的使用

我们先来看看构造方法长啥样吧。

我们先创建一个我们最初学代码时候的HelloWorld。

看到了吗,构造方法?

哈哈哈,一般情况下,我们是看不到这个构造方法的,因为这个是被省略了,不是没有,我们呢,让他显示出来。

alt + shift + s

选择Generate Constructors from Superclass(从超类中生成构造函数)。(这个知识点我下面说)

创建好之后,是这样滴

这个public HelloWorld()这个就是每一个类的默认构造方法,这个HelloWorld 就是每一个类的类名。

我们上面说了,除去这个默认的构造方法,我们还可以自己创建构造方法,这个自己构建的构造方法就是我基础9博客中说的重载,大家有需要可以去看一下啥叫重载。Java学习里程-----Java基础_9面向对象

下面我们来创建一个,直接上代码

重载完成之后,我们来测试这个构造方法。

创建一个HelloWorldTest类,然后我们实例化这个HelloWorld。

运行:

我们发现,屁也没有,因为我们调用的默认构造器,所以啥也没有。我们再来调用我们刚刚重载的构造器。

因为刚刚我们重载的构造方法需要一个String的参数,所以我们传入一个参数,这样,就可以调用我们刚刚重载的构造方法了。然后运行:

看,是不是,第一个HelloWorld实例化的时候,调用的是默认构造方法,而第二个HelloWorld实例化的时候,调用的是另外一个重载的构造方法。

我们这次呢,将HelloWorld中两个构造方法全部删除掉,然后,我们在HelloWorld中顺便弄个普通方法,看好了,普通方法!!用来测试的时候调用。最后,我们在HelloWorldTest类中再实例化对象,我们再来看一下:

在这个Test测试方法中,我们可以发现,可以调用,说明这个HelloWorld被实例化了,但是没有构造器怎么实例化的?

Java是这样设计的,如果一个类中没有构造方法,那么系统会自动生成一个默认的无参构造方法。

相反的,如果类中有其他的不是默认的构造方法,那么这个类不会自动创建默认的构造方法了。我们可以测试。上代码!

然后再测试类中进行普通实例化,我们发现会报错,我们来看一下:

说没有定义默认的构造器。所以,我们在重载构造方法的时候,首先不要忘记把默认的也加上!!!

三、Object

Object这个类啊,是个极其特殊的类,为啥这么说,我们来看上面那个创建默认构造函数的事情。(我把图给在贴一下)

不知道大家发现没有,在这个构造函数里面有一个super()方法,学过继承的都知道,super这个是个关键字,super是指向父类的引用。但是这个HelloWorld并没有继承什么啊,它哪里来的父类?

不要急,我们进入到super方法中,我们来看看它具体指的谁。

我们可以看到啊,它是进入到了Object这个类里面了。这就奇怪了,为啥会进入到这里了呢?

我们来看一下jdk Api,https://docs.oracle.com/javase/8/docs/api/ 我给你们连接,自己保存一下。

所有的类都得实现这个类的。看到了吧,这就说是所有的类都默认继承了这个Object。

也就是说,所有的类的父类都是Object。

但是,这时候有人又要问了,不是说Java中不是单继承吗?既然大家都继承了Object了,那为啥还能继承?这不是和Java继承冲突了吗?

下面我来解释:

A这个类默认继承了Object。然后这时候出来了一个B这个类,B呢和A一样,都默认继承了Object。

现在A要继承B,也就是说 A extends B,那么这时候,他们的继承关系就改变了,变成了 A extends B,然后B extends Object。

Java中是这样定义的,如果类没有继承,那么就去继承默认的Object。

 

大家好好消化一下。有不懂的可以加我QQ:2100363119

ps:下方二维码是我个人的公众号,最近刚开不久,我每个月都会更新一些活动,希望大家可以积极参加,4月份活动已开,活动详情可以关注公众号之后,回复“活动”二字进行查看,参加。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

他 他 = new 他()

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值