栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于抽象类是否可以实例化问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于抽象类是否可以实例化问题

最近在重新回顾JavaSE部分的知识,在学习抽象类的时候,我们都知道抽象类是不可实例化的,当时不知道怎么的就将下面的部分(Test.java中的代码)敲出来了,就让我产生了疑问,总感觉抽象类可以进行实例化,通过查阅相关的资料,解决了这个疑问,如果有什么不对的地方,请见谅,并希望你及时留言我将进行改正。

让我产生疑问的项目,序号3部分的代码:
1.项目结构:

2.Animal.java

3.Test.java

运行情况:

从Test.java中我们可以看到Animal抽象类可以像对象一样去使用难道抽象类真的实例化吗?
解决这个问题你需要搞懂三个问题:
1:什么是实例化对象

实例化的过程,是通过对应的构造方法(有参/无参构造)对对应的对象进行初始化,从而创建该对象。

语法结构如下:

类名 对象名=new 类名();

2:什么是匿名内部类

当我要去使用某个抽象类/接口的时候我需要做的就是写一个子类来继承该抽象类/实现该接口,然后通过在子类中重写对应的方法,在外部通过实例化该子类,再调用相应的方法,从而实现了对该抽象类/接口的使用,匿名内部类就是不用去写这个抽象类/接口的子类,直接创建该子类,并重写相应的方法,从而实现了对该抽象类/接口的使用。

语法结构如下:
java
new 父类名或者接口名(){
//相应的方法重写
}

该部分相关学习链接:
Java中内部类详解—匿名内部类
接口和抽象类有什么区别?(备注看第2,3回复)

3:什么是多态
向上转型:父类 对象名=new 子类();
向下转型:子类 对象名=(子类)new 父类();

该部分相关学习链接:
JAVA的多态用几句话能直观的解释一下吗?
java方法的多态性理解

---------------回答上面的问题:

答:抽象类不能被实例化,只能被子类化!

右面部分:创建Animal的匿名内部类(创建的是Animal的子类)
左面部分:Animal的子类对象向上转型为父类对象(多态的使用)

该部分相关学习链接:
关于抽象类无法实例化,但是可以使用“new“来实例的疑问

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/361579.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号