java重战篇二:类获取及对象的创建方式

我不太喜欢讲述教科书上天花乱坠的定义,因为说出来,也没多少人看、看懂,当然最重要的原因是,我不会讲,⊙︿⊙
我们直接按功能学习:


一、获取全限类名

如果我们要获取java内置类的全限类型,我们可以用Object类提供的getClass方法,因为Object是所有类的祖宗,其他类直接或间接继承了Object

在这里插入图片描述
那对于我们自定义的类是否也可以通过这种方法来获取全限类名呢?
看下面定义的一种类
在这里插入图片描述
可能有人会这么说,这个类没有继承Object类,不能使用,应该改成下面这种写法,也就是来继承Object类

在这里插入图片描述
当然,这样子无非是比较严谨的,但是对于java语言而言,一切类或接口都隐式地继承了Object,什么,不信?来试试
在这里插入图片描述
事实上上确实也可以输出,当然你那样子写觉得是没有问题的!

二、创建对象的几种方法

1、new关键字

大多数人,无论是哪种语言,相信new一定用过不少次数吧。
而在java语言中,new是最基本,最大众化的创建方式
它为需要被创建的对象 在堆上申请一块内存空间,同时在栈上存放其对象的引用地址。
在这里插入图片描述

2、类的静态方法

本质上还是new方法,只不过此时类的构造函数为私有,无法通过外部new来直接创建该类的对象,而只能通过该类的具体方法来创建这个类的对象。

在这里插入图片描述

3、Class.forName()

这种方式比较重要的,因为在一般项目开发中,你开发的时候不可能每次都去看下代码,然后写一个类名上去,这样子不但开发拖累大,而且会在一定程度上导致代码耦合度增高

那这种方法适合什么情况
你通过别人写的函数代码,调用它,对方返回你一个全限类名字符串,就是这个字符串变量代表的是全限类名,这种时候就需要你根据字符串变量动态来执行类的实例化过程

在这里插入图片描述

三部曲:

  • 获取全限类名字符串
  • 通过Class.forName获取该类
  • 最后通过获取的类的newInstance方法来实例化该类(默认是Object类)

当然,你也可以不用那样子做,还可以通过获取该类的构造器方法getConstructors来实例化该类,如下
在这里插入图片描述
,当然,这是最泛化的方法,你也可以指定构造器方法名称来实例化该类,通过以下代码完成
在这里插入图片描述
至于其他什么获取私有构造方法,设置权限啥啥啥的就不一一讲明了,太多,有兴趣可以自行去查阅文档。

三、其他

其实还有其他创建对象的方法,比如自定义clone方法,反序列。但两者都需要你创建的对象要实现相关接口才可以调用。百度吧,骚年们。(-ロ-)【pic】

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

凌晨小街

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

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

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

打赏作者

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

抵扣说明:

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

余额充值