我的编程空间,编程开发者的网络收藏夹
学习永远不晚

抽象类是否能实例化

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

抽象类是否能实例化

本篇内容介绍了“抽象类是否能实例化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

抽象类不能实例化

抽象类不能直接通过 new 去实例化一个对象,那它就是不能实例化,要获取抽象类的对象,需要先用一个类继承抽象类,然后去实例化子类。

也可以用匿名内部类,在抽象类中创建一个匿名的子类,继承抽象类,通过特殊的语法实例化子类的对象(这个后面会详细解释) 。

现在重点来了,要研究这个问题,前提是你要了解抽象类,万变不离其宗,我们从抽象类的根源谈起 ,深化对抽象类的理解。

首先看这个例子:

package com.my.animal;     //动物类  public class Animal {  String name;//名字  String color;//颜色     public Animal(String name,String color){  this.name = name;  this.color = color;  }  public void run(){  System.out.println(name+"四条腿跑的很快!!!");  }  }  //狗类继承动物类  class Dog extends Animal{  public Dog(String name,String color){  super(name,color);  }  }  //鱼类继承动物类  class Fish extends Animal{     public Fish(String name, String color) {  super(name, color);  }  }     class Test{  public static void main(String[] args) {  Dog dog = new Dog("哈巴狗","白色");  dog.run();     Fish fish = new Fish("锦鲤","红色");  fish.run();  }  }

运行结果:

哈巴狗四条腿跑的很快!!!

锦鲤四条腿跑的很快!!!

是不是发现问题了,鱼怎么能用腿跑呢,难道是原始鱼?

哈哈,开玩笑的,这个问题如何解决?估计大家马上想到了,在子类中重写父类的 run 方法不就行了。

对,确实这样就可以解决,但是大家想过没有,我们是如何发现这个问题的?

是不是编译运行之后才看到的,当然,也有大佬能不编译运行就能看到,不抬杠啊。

意思是说有发现不了这个问题的风险,对别人可能无所谓,但对我们程序员来说,这种低级错误还是不犯的好,程序员应该有更高的追求,岂能在这被绊倒,我们要把这种风险降为零,那该如何做呢?

不急,心急吃不了热豆腐,且看我慢慢分析:

目前存在的问题:

1.动物类的run方法描述的不正确

2.没有强制要子类一定要重写父类的run方法

解决方案:(抽象类的应用场景)

我们在描述一类事物的时候,发现该种事物确实存在着某种行为,但是这种行为目前是不具体的,那么我们可以抽取这种行为的声明,但是不去实现该种行为,这时候这种行为我们称作为抽象的行为,我们就需要使用抽象类

先看下面的例子:

package com.my.animal;  //动物类(抽象类)  public abstract class Animal {  String name;//名字  String color;//颜色  //构造方法  public Animal(String name,String color){  this.name = name;  this.color = color;  }  //非抽象方法  public void eat(){  System.out.println(name+"吃东西!!!");  }  //抽象方法  public abstract void run();  }     class Dog extends Animal{  public Dog(String name,String color){  super(name,color);  }     @Override  public void run() {  System.out.println(name+"四条腿跑得快!!");  }  }     class Fish extends Animal{     public Fish(String name, String color) {  super(name, color);  }     @Override  public void run() {  System.out.println(name+"摇摇尾巴游啊游!!");  }  }     class Test{  public static void main(String[] args) {  Dog dog = new Dog("哈巴狗","白色");  dog.run();     Fish fish = new Fish("锦鲤","红色");  fish.run();  }  }

运行结果:

哈巴狗四条腿跑得快!!

锦鲤摇摇尾巴游啊游!!

这个问题解决了,那下面解决的问题就是:抽象类能实例化对象吗?

看这个例子就知道了:

{  String name;  String color;     public Animal(String name,String color){  this.name = name;  this.color = color;  }  public abstract void run();  }     class Test{  public static void main(String[] args) {  Animal a = new Animal();  a.run();  }  }

运行结果:

Error:(45,20) java:com.my.animal.Animal是抽象的;无法实例化

抽象类注意的细节:

1.如果一个函数没有方法体,那么该函数必须要使用abstract修饰,把该函数修饰成抽象的函数。

2.如果一个类出现了抽象的函数,那么该类也必须使用abstract修饰。

3.如果一个非抽象类继承了抽象类,那么必须要把抽象类的所有抽象方法全部实现。

4.抽象类可以存在抽象方法,也可以存在非抽象方法,还可以不存在抽象方法,但是这样没任何意义,Java是不写废话的。

5.抽象类是不能实例化对象的

6.抽象类是存在构造函数的,其构造函数是提供给子类创建对象的时候初始化父类的属性的。

疑问:为什么抽象类不能实例化对象?

因为抽象类是存在抽象方法的,如果能让抽象类创建对象的话,那么使用抽象类的对象调用抽象方法是没有任何意义的。

疑问排解了,故事结束了?不,学海本无底,我们来点扩展,就是开头提到的如何用匿名内部类去实例化子类对象。

看下面的例子:

public class Java_Abstract2 {     public void a(){  System.out.println("我是抽象类中的一个非抽象方法");  }     public static Java_Abstract2 newIntences(){  return new Java_Abstract2(){     };  }  }     class Test2{  public static void main(String[] args) {  Java_Abstract2 java_abstract2 = Java_Abstract2.newIntences();  java_abstract2.a();  }  }

运行结果:

我是抽象类中的一个非抽象方法

“抽象类是否能实例化”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

抽象类是否能实例化

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

java不能实例化抽象类如何改

要实例化抽象类,可以通过以下两种方式进行改进:将抽象类改为具体类:将抽象类改为普通类,即去掉抽象修饰符(abstract),并提供具体的实现方法。这样就可以直接实例化该类了。创建一个子类继承抽象类:创建一个继承自该抽象类的具体子类,并实现父
2023-10-22

php抽象类为什么不能实例化

PHP的抽象类(abstract class)是一种特殊的类,它不能被实例化。抽象类是为了被继承而存在的,它定义了一组方法的接口,但没有具体的实现。抽象类的目的是为了作为其他类的基类,其他类通过继承抽象类来实现其定义的方法。抽象类的主要特点
2023-10-07

golang是否有抽象类

golang没有抽象类。golang并不是面向对象(OOP)语言,没有类和继承的概念,也没有抽象类的概念;但golang中有结构体(struct)和接口(interface),可以通过struct和interface的组合来间接实现面向对象语言中的抽象类。
2023-05-14

java抽象类如何实例化

Java抽象类不能直接实例化,因为抽象类是一种不完整的类,其中可能包含抽象方法,这些方法没有实现。所以,不能直接使用抽象类来创建对象。但是,我们可以通过创建抽象类的子类来实例化抽象类。子类需要实现抽象类中的所有抽象方法才能被实例化。例如,
2023-10-22

Java如何实例化一个抽象类对象

这篇文章主要介绍Java如何实例化一个抽象类对象,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在Java 中抽象类是不能直接被实例化的。但是很多时候抽象类的该特点成为一个比较麻烦的阻碍。例如如果我想使用动态代理来给一
2023-05-30

python抽象类可以被实例化吗

不可以。抽象类是一种特殊的类,不能直接被实例化。抽象类的主要作用是为其子类提供一个共同的接口,并定义一些通用的方法。抽象类定义了一些抽象方法,这些方法在抽象类中没有具体实现,而是由其子类来实现。只有子类实现了所有抽象方法,才能被实例化。
2023-10-25

JAVA抽象类和抽象方法(abstract)实例分析

抽象类和抽象方法是Java中用于实现抽象化的概念。抽象类是一个不能被实例化的类,它可以包含抽象方法和非抽象方法。抽象方法是一个没有具体实现的方法,它只有方法的声明,没有方法体。下面是一个抽象类和抽象方法的实例分析:```java// 定义一
2023-08-16

java中抽象类、抽象方法、接口与实现接口实例详解

前言对于java中的抽象类,抽象方法,接口,实现接口等具体的概念就不在这里详细的说明了,网上书本都有很多解释,主要是我懒,下面通过一个例子来说明其中的精髓要点,能不能练成绝世武功,踏上封王之路,就看自己的的啦(不要误会,我指的只是我自己啦啦
2023-05-30

Java抽象类与接口实例分析

这篇“Java抽象类与接口实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java抽象类与接口实例分析”文章吧。1.抽
2023-06-30

深入探讨Golang是否支持抽象类的设计

Golang是否支持抽象类的设计一直是一个备受讨论的话题。传统的面向对象语言如Java、C#等都提供了抽象类的概念,通过抽象类可以定义一些抽象方法和属性,要求子类实现或者重写这些方法,从而实现多态性和封装性。但是Golang作为一门静态类型
深入探讨Golang是否支持抽象类的设计
2024-03-13

Java中的抽象类和接口实例分析

这篇文章主要介绍了Java中的抽象类和接口实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中的抽象类和接口实例分析文章都会有所收获,下面我们一起来看看吧。抽象类什么是抽象类?类和类之间有共同特征,
2023-06-29

python类怎么实例化对象

这篇文章将为大家详细讲解有关python类怎么实例化对象,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开发,众多大型网站
2023-06-14

C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类实例分析

今天小编给大家分享一下C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后
2023-06-30

python的类怎么实例化对象

这篇文章主要介绍“python的类怎么实例化对象”,在日常操作中,相信很多人在python的类怎么实例化对象问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python的类怎么实例化对象”的疑惑有所帮助!接下来
2023-06-30

C++多态的实现与原理及抽象类实例分析

这篇文章主要讲解了“C++多态的实现与原理及抽象类实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++多态的实现与原理及抽象类实例分析”吧!多态的概念多态: 从字面意思来看,就是事物
2023-06-29

Java 代码优化:接口与抽象类的应用实践

接口和抽象类是 Java 中用于代码优化和解耦的强大工具。本文深入探讨了接口和抽象类的应用实践,提供了具体的示例和指南,帮助开发者有效地利用这些技术。
Java 代码优化:接口与抽象类的应用实践
2024-03-03

Android编程学习之抽象类AbsListView用法实例分析

本文实例讲述了Android编程学习之抽象类AbsListView用法。分享给大家供大家参考,具体如下: 一、继承关系 public abstract class AbsListView extends AdapterView
2022-06-06

Java的单例模式与final及抽象类和接口实例分析

这篇文章主要介绍“Java的单例模式与final及抽象类和接口实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java的单例模式与final及抽象类和接口实例分析”文章能帮助大家解决问题。1.
2023-06-30

Java语言中的抽象类与继承实例代码分析

这篇文章主要介绍“Java语言中的抽象类与继承实例代码分析”,在日常操作中,相信很多人在Java语言中的抽象类与继承实例代码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java语言中的抽象类与继承实例代
2023-07-04

编程热搜

目录