精华内容
下载资源
问答
  • 抽象类如何定义对象
    千次阅读
    2020-10-09 08:59:46

    如题

    更多相关内容
  • 抽象类不能创建对象,其创建对象没有意义,但是抽象类可以保存一类事物具备的共同属性和行为,让子类进行继承。 抽象类的构造方法不是给自己用的,而是为了让子类调用构造方法创建对象时初始化用的 ...

    抽象类不能创建对象,其创建对象没有意义,但是抽象类可以保存一类事物具备的共同属性和行为,让子类进行继承。

    抽象类的构造方法不是给自己用的,而是为了让子类调用构造方法创建对象时初始化用的

    展开全文
  • 抽象类概述分析事物时, 发现了共性的内容,就出现向上抽取,但是如果父类 的方法功能与子类不同,那么这时就不抽取方法主体,这样抽取出来的方法 就是抽象方法 什么是抽象类有抽象方法的类 抽象类和普通的父类有什么区别...

    b21eb33baf91d5eef0d7b4c736a826c6.png

    抽象类概述

    分析事物时, 发现了共性的内容,就出现向上抽取,但是如果父类 的方法功能与子类不同,那么这时就不抽取方法主体,这样抽取出来的方法 就是抽象方法

    什么是抽象类

    有抽象方法的类

    抽象类和普通的父类有什么区别?

    有抽象方法

    抽象方法又是什么?

    使用 abstract 关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体

    总结: 
        1. 将像的部分和相似的部分抽取到一个父类当中(共性内容向上抽取)
                ***抽象类,就是一个特殊父类***
        2. 抽象类和普通父类的区别在于, 抽象类可以定义抽象方法
        3. 当我们将共性的行为(方法) 抽取到父类之中后, 发现该行为在父类中描述不清了,
        但这个行为还是子类(强制重写)必须要做的行为,就可以定义为抽象方法
    
                举例:  
                        动物类 :
                            eat(); //将共性的eat方法抽取到父类中后,发现该行为描述不清了
                        猫类 :
                            eat() { 吃<●)))><< };
                        狗类 :
                            eat() {吃肉};

    抽象类和抽象方法如何定义?

    抽象方法:
    去掉方法体的大括号,然后分号结束,并在返回值类型前面加入关键字[abstract]
    public abstract void eat () ;
    限制:抽象方法,必须存活在抽象类或者是接口当中
    抽象类如何定义: 在class 前面加入[abstract]
    public abstract class Student  {}

    抽象类的子类必须要重写抽象类的抽象方法(或者把自己也变成抽象类)

    抽象类的特点

    A . 抽象类和抽象方法必须使用abstract关键字修饰
    B . 抽象类中不一定有抽象方法,但是有抽象方法的一定是抽象类或接口
    C . 抽象类不能实例化 (实例 = 对象) [也就是不能创建对象],如果非要实例化,可以通过多态的形式创建,也就是 父类引用指向子类对象
    实例化:
    Animal a = new Dog();
    //多态调用方法,编译看左边(检查父类中有没有eat方法),运行看右边(执行的是子类的eat方法)
    a.eat();
    D . 抽象类的子类 1.重写父类(抽象类)中所有的抽象方法[推荐方案] 2.要么将自己也变成一个抽象类

    抽象类的成员特点

    总结:
        1. 成员变量: 
                ● 可以是一般变量
                ● 也可以是常量
    
        2. 成员方法:
                ● 可以是一般方法
                ● 也可以是抽象方法
    
        3. 构造方法:
                有,目的是为了方便子类进行初始化的
    
        结论: 抽象类中除了可以定义抽象方法以外,其余的定义和普通的类是一样的

    注意事项

    关于抽象类的使用,


    1. 抽象类不能创建对象,如果创建了,编译无法通过而报错,只能创建其非抽象子类的对象


    2. 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的


    3. 抽象类中.不一定包含抽象方法,但是有抽象方法一定要是抽象类


    4.抽象类的子类,必须重写抽象父类中所有抽象方法,否则,编译无法通过而报错, 除非该子类也是抽象类

    展开全文
  • 抽象类为什么不能创建对象

    千次阅读 2020-07-10 17:24:06
    在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当...

    抽象类是什么?

    抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。

    通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。

    抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。

     通过上面的阐述,大家应该对抽象类有了一个大概的认识吧!但是对纯虚拟函数和抽象方法分别是什么还是有一定的模糊

    纯虚函数:纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。

    纯虚函数也可以叫抽象函数,一般来说它只有函数名、参数和返回值类型,不需要函数体。这意味着它没有函数的实现,需要让派生类去实现。

    抽象方法:java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。

    为什么抽象类还不能创建对象? 

    首先与具体的类作比较:

    1. 抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)
    2. 允许(但不要求)抽象类包含抽象成员。
    3. 抽象类不能被密封。

     与接口作比较:

    相同点——不能实例化、包含未实现的方法声明、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)

    不同点——

    1. 类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。
    2. 抽象类当中可以存在非抽象的方法,可接口不能,且它里面的方法只是一个声明必须用public来修饰没有具体实现的方法。
    3. 抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static final)
    4. 抽象类是对象的抽象,然而接口是一种行为规范。

    在Java中的应用:

    1. abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface
    2. 在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
    3. abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
    4. 实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法
    5. 接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值
    6. 抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值、
    7. 接口中的方法默认都是 public,abstract 类型的
    展开全文
  • 可以用一个抽象类定义一个指向该类的指针,但是不能定义或声明对象。 这个中原因就是,定义一个类的对象是,编译器在编译时需要了解类的所有信息以便准确的为要实例化的对象分配内存;由此可见,定义一个类对象是要...
  • 本文实例讲述了Java抽象类和抽象方法定义与用法。分享给大家供大家参考,具体如下:一、Java抽象类1、抽象类的说明在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象...
  • 抽象类能创建对象吗?

    千次阅读 2020-07-15 00:27:20
    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类抽象类是不能创建对象的原因: ...
  • 什么是抽象类?怎么定义

    千次阅读 2021-09-01 09:47:26
    什么是抽象类?怎么定义?这是属于java技术里面的一个知识点,本期教程就是围绕这个问题做的相关介绍,当定义一个类时,常常需要定义一些成员方法描述类的行为特征,但有时这些方法的实现方式是无法确定的。例如,在...
  • 抽象类定义与使用

    千次阅读 2019-04-06 16:16:48
    抽象类定义:抽象类只是在普通类的基础上多了抽象方法。抽象方法用abstract修饰,只有方法声明而没有方法体。 定义一个抽象类: abstract class Main { private int num; //普通方法 public void setNum(int ...
  • 这种情况搞不懂,创建对象成功了,是只要把抽象方法给具现化了就能创建吗? ``` abstract class Driver { public abstract void drive(); } public class Test { public static void main(String[] args) ...
  • 先从反面来讲:如果含有纯虚函数的可以定义对象,那么该对象就应该可以调用中的纯虚函数,但是纯虚函数是没有实现的,这就是个矛盾的。 正面来讲:普通具有成员函数,构造的对象时,会对成员变量和成员...
  • JAVA抽象类定义

    万次阅读 多人点赞 2018-08-25 19:24:40
    抽象类的基本概念 抽象方法,只声明而未实现的方法我们称为抽象方法,所有的抽象方法都需要用abstract关键字声明,包含抽象方法的类也需要使用abstract关键字声明,抽象类和普通类相比,区别在于抽象类带有抽象...
  • 抽象类能否创建对象

    千次阅读 2020-07-16 20:06:40
    人们使用抽象类和接口只是为了说明要干什么事,而让他们的实现类去根据自己的需要去实现这些方法,比如说抽象类定义一个eat()方法,它并没有说这个方法具体怎么做,羊就可以吃草,虎就可以吃肉,羊和虎都实现了这个...
  • Java抽象类/抽象方法定义及其特性详解

    千次阅读 多人点赞 2019-09-28 18:37:53
    定义抽象类的作用是将一类对象的共同特点抽象出来,成为代表该类共同特性的抽象概念,其后在描述某一具体对象时,只要添加与其他子类对象的不同之处,而不需要重复类的共同特性。这样就使得程序概念层次分明,开发更...
  • 一、抽象类与抽象方法的定义 抽象类:只在普通类的基础上扩充了一些抽象...抽象类中包含抽象方法,抽象方法不包含方法体,即抽象类中没有具体实现,所以抽象类中不能直接产生实例化对象 举例:创建一个简单的抽象...
  • 抽象类定义

    千次阅读 2017-05-26 15:40:25
    抽象类定义  普通类可以直接产生实例化对象,并且在普通类中可以包含构造方法、普通方法、static 方法、常量、变量的内容。而所谓抽象类就是指在普通类的结构里面增加抽象方法的组成部分,抽象方法指的是没有...
  • 一、抽象类 定义:在普通类的基础上扩充了一些抽象方法 。 1. 抽象方法:只声明而未实现...抽象类中没有具体实现,因此抽象类不能直接实例化对象 abstract class Person{ private String name;//姓名属性 ...
  • c++中的抽象类是怎么定义

    千次阅读 2020-11-03 11:27:45
    zhi并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法...
  • 抽象类定义?为什么要使用抽象类?

    千次阅读 2018-07-16 20:18:15
    为什么要使用抽象类? 有什么好处? 答案:1 现实中一些父类中的方法没必要写 各个子类中的方法会有所不同 所以没必要在父类中写 2 看被人代码时候会注意这是抽象方法...5 含有抽象方法的类必须定义抽象类 ...
  • java抽象类详解

    千次阅读 2021-02-25 18:11:57
    前言在没讲抽象类之前 我们先来看看 final关键字final 修饰符 可以修饰 类、属性、方法...当我们在写继承时 一般实现时用不到父类 不需要实例化对象 这个时候我们就把这个父类定义抽象类也就是说抽象类本身没有...
  • 关于C++抽象类建立对象的问题

    千次阅读 2017-02-04 10:18:06
    抽象类是无法建立对象、但可以定义指针、该指针可以指向它的派生类,进而实现多态性
  • Java抽象类 详解

    万次阅读 多人点赞 2016-10-05 00:06:35
    一、抽象类的基本概念普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。...
  • Java抽象类和抽象方法如何定义

    千次阅读 2020-11-18 23:46:06
    具体的类是可以被初始化为对象的,在类的声明前面加上抽象类关键词abstract,则该类就会成为一个抽象类。 abstract public class Canine extends Animal { public void roam () {} } 编译器不会让你初始化抽象类,...
  • Java中的抽象类和接口

    千次阅读 多人点赞 2022-04-08 15:17:42
    各位铁汁们大家好呀!今天让我们继续学习java,看看java中的抽象类和接口到底是什么? 里面也会讲到多态呀,一起来看看吧
  • 首先我们知道,一个类如果是抽象类,我们就不能用这个类实例化一个对象。什么样的类是抽象类呢? C++没有C Sharp中的关键字abstract,但是当一个类中有一个或多个纯虚函数的时候,这个类就自动成为了抽象类,即不...
  • c++抽象类抽象类指针笔记

    千次阅读 2020-06-20 21:14:47
    不能用来定义对象而只作为一种基本类型用作继承的类,称为抽象类,由于它常用作基类,通常称为抽象基类。凡是包含纯虚函数的类都是抽象基类。因为纯虚函数是不能够被调用的,包含纯虚函数的类是无法建立对象的。 ...
  • C#学习入门(三)—— 抽象类

    千次阅读 2020-11-08 21:50:49
    抽象类的概念和定义1.1 定义1.2 抽象方法1.3 重写抽象方法1.4 抽象类和具体类的区别1.5 多态2. 实现的案例2.1 例子2.2 向下转换3. 异常处理3.1 try-catch3.2 使用as和is 1.抽象类的概念和定义 抽象类往往用来表征对...
  • 用C#语言编写一段程序,满足以下要求: 1.定义抽象类Pet(宠物)类,作为基类。...4.定义包含主方法的类MainClass,通过抽象类对象调用派生类的覆写方法。 using System; using System.Collections.Generic; usin...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 789,179
精华内容 315,671
关键字:

抽象类如何定义对象