精华内容
下载资源
问答
  • 抽象方法只能在抽象类中吗
    千次阅读
    2020-06-11 09:20:14

    抽象类可以没有抽象方法,但是如果你的一个类已经声明成了抽象类,即使这个类中没有抽象方法,它也不能再实例化,即不能直接构造一个该类的对象。
    如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则编译通不过。

    抽象类可以没有抽象方法,甚至可以和普通类一样含有构造方法。当你要求不能创建某个类的实例,只能通过其他类继承这个类来使用时,就可以定义为抽象类。

    抽象类中可以没有抽象方法,也可以包含非抽象方法,但有抽象方法的类一定是抽象类。

    更多相关内容
  • 抽象方法必须在抽象类中吗

    千次阅读 2021-03-11 10:44:32
    抽象方法必须在抽象类中吗2020-07-01 15:01:18文/叶丹1、抽象方法必须抽象类中,所以抽象类中的方法都必须是抽象方法。2、Final类中的属性和方法都必须被final修饰符修饰。3、最终类不能派生子类,最终方法不能被...

    抽象方法必须在抽象类中吗2020-07-01 15:01:18文/叶丹

    1、抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。2、Final类中的属性和方法都必须被final修饰符修饰。3、最终类不能派生子类,最终方法不能被覆盖。4、子类要调用父类的方法,必须使用super关键字。

    f1ebd2a5cf50b280c7f777e70826ce81.png

    抽象方法:

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

    抽象方法与抽象类:

    当一个方法为抽象方法时,意味着这个方法应该被子类的方法所重写,否则其子类的该方法仍然是abstract的,这个子类由于继承父类,拥有抽象方法,因此它也是抽象类,即声明为abstract。abstract抽象类不能用new实例化对象,abstract方法只允许声明不能实现。如果一个类中含有abstract方法,那么这个类必须用abstract来修饰,当然abstract类也可以没有abstract方法。 一个抽象类里面没有一个抽象方法可用来禁止产生这种类的对象。

    抽象方法与接口:

    在interface中所有的方法都是public abstract的,即使你没有申明它是public abstract的。在interface中所有的数据成员都是public static final的,即使你没有申明.但不能是blank final 在编译时候确定的。在Java,interface的地位和class是一样的。实现interface的类,其interface中所有的方法必须被“实现”,否则这个类成为一个抽象类。Interface可以从多个interface得到继承,但是不能继承类。一个类可以实现多个interface。

    展开全文
  • 一般情况下抽象类中可以包含抽象方法和非抽象方法,静态类中只能包含静态成员,所有的静态成员也只能包含静态类中。 因为静态static的本质是包含abstract和sealed的,所以静态方法可以包含在抽象类中,并通过抽象...
  • C#抽象类和抽象方法(很详细,你值得拥有!!!)

    千次阅读 多人点赞 2020-06-18 19:10:32
    什么是抽象类? 什么是抽象方法? 抽象类和抽象方法有什么特性? 抽象类的使用场景? 抽象类的作用? 抽象类和接口的区别? 抽象类和抽象方法怎么声明? 抽象类和抽象方法如何使用?

    前言:通过阅读这篇文章可以很透彻的理解C#中的抽象类和抽象方法,推荐刚入门的小伙伴收藏嗷!!!

    一、抽象类

    1.抽象类的概念

    抽象类是表示抽象概念的特殊类。如果一个类不与具体的事物相联系,而只是表达一种抽象的概念,仅仅是作为派生类的一个基类,这样的类就是抽象类。抽象类使用关键字abstract来定义,抽象类不能被实例化,一个抽象类可以同时包含抽象方法和非抽象方法。比如说动物是抽象的,狗是具体的。

    abstract关键字可以和类、方法、属性、索引器及事件一起使用。


    2.抽象类的特性

    1. 抽象类不能直接实例化。并且对抽象类使用new运算符是编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值为null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
    2. 抽象类可以包含抽象方法和抽象访问器,但是非抽象类不可以。
    3. 不能用sealed关键字修改抽象类,如果使用了sealed关键字意味着该类不能被继承。
    4. 从抽象类派生的非抽象类必须重写所有抽象方法和抽象访问器。

    3.抽象类的声明

    在类声明中使用abstract关键字以指示类只能是其他类的基类。

    [访问修饰符] abstract class 类名
    {
    	类成员;
    }
    

    4.抽象类的作用

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

    5.抽象类的使用场景

    • 如果一个类设计的目点是用来被其它类继承的,它代表一类对象的所具有的公共属性或方法,那个这个类就应该设置为抽象类。
    • 在实现接口时,常写一个抽象类,来实现接口中的某些子类中所需的通用方法,接着在编写各个子类时,即可继承该抽象类来用。省去在每一个都要实现通用的方法的困扰。

    二、抽象方法

    1.抽象方法的概念

    在抽象类中也可以使用关键字absract定义抽象方法,要求所有的派生非抽象类都要重写实现抽象方法,引入抽象方法的原因在于抽象类本身是一种抽象概念,有的方法并不需要具体实现,而是留下来让派生类重写实现。抽象类中也可以声明正常方法。也就是说抽象方法不能有方法体,抽象类中的所有抽象方法必须在子类中重写override


    2.抽象方法的特性

    1. 抽象方法是隐式的virtual方法(虚方法)。
    2. 只允许在抽象类中使用抽象方法声明。
    3. 因为抽象方法声明不提供实实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号 ({ })。
    4. 实现由overriding方法提供,它是非抽象类的成员。
    5. 在抽象方法声明中使用staticvirtual修饰符是错误的。
    6. 除了在声明和调用语法上不同外,抽象属性的行为与抽象方法一样。在静态属性上使用abstract修饰符是错误的。
    7. 在派生类中,使用override修饰符的属性声明可以重写抽象类的继承属性。

    3.抽象方法的声明

    注意:抽象方法必须声明在抽象类中;声明抽象方法时,不能使用virtualstaticprivate修饰符;在方法或属性声明中使用abstract修饰符以指示此方法或属性不包含实现,方法声明只是以一个分号结束,并且在签名后没有大括号 ({ })。

    [访问修饰符] abstract 返回值类型 方法名();
    

    三、抽象类和抽象方法的使用

    例1:
    当从抽象类派生非抽象类时,这些非抽象类必须具体实现所继承的所有抽象成员,从而重写那些抽象成员。

    	abstract class Peopole
        {
            //基类Peopole的抽象方法Run
            public abstract void Run();
        }
        abstract class Man : Peopole
        {
            //因为此类为抽象类,所以不能重写基类中的抽象方法Run
            //Peopole基类的派生类Man的正常方法Say
            public void Say()
            {
                Console.WriteLine("Man类的正常方法Say");
            }
        }
        class Son : Man
        {
            //因为此类为非抽象类,所以得重写所继承的所有抽象成员。由于抽象类Man中没有抽象方法,所以只重写抽象类Peopole中的抽象方法Run
            public override void Run()
            {
                Console.WriteLine("重写Peopole抽象类的抽象方法Run");
            }
        }
    

    总结:抽象类Peopole引入抽象方法Run。类Man引入另一个正常方法Say,但由于类Man不提供Run的实现,则类Man也必须声明为抽象类。类Son重写Run方法,并提供一个具体实现。由于类Son中没有了抽象成员,因此可以(但并非必须)将类Son声明为非抽象类。

    例2:

    	public abstract class Person
        {
            /// <summary>
            /// 编号
            /// </summary>
            public int ID { get; set; }
            /// <summary>
            /// 姓名
            /// </summary>
            public string Name { get; set; }
            /// <summary>
            /// 抽象方法,用来输出信息
            /// </summary>
            public abstract void Getreturn();
        }
        public class Student:Person
        {
            /// <summary>
            /// 重写输出信息方法
            /// </summary>
            public override void Getreturn()
            {
                Console.WriteLine($"编号:{ID}---姓名:{Name}");
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                Student stu = new Student();//实例化派生类Student
                stu.ID = 06;
                stu.Name = "王麻子";
                stu.Getreturn();//调用Student类中的Getreturn方法
    
    
                Student stu1 = new Student();//实例化派生类Student
                Person per = stu1;//通过使用派生类对象stu1间接来实例化抽象类Person
                //也可以直接声明为:Person per = new Student();
                per.ID = 05;
                per.Name = "张三";
                per.Getreturn();//调用抽象类中的Getreturn方法
    
                Console.ReadLine();
            }
        }
    

    执行结果:
    在这里插入图片描述



    你学到了吗?有什么疑惑可以评论出来,共同解决!!!

    展开全文
  • 011 抽象类必须要有抽象方法吗?

    千次阅读 2021-02-28 14:53:53
    (有抽象方法就是抽象类,是抽象类可以没有抽象方法)解释:抽象方法:java的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不...

    抽象类必须要有抽象方法吗?

    答:不需要,

    抽象类不一定有抽象方法;但是包含一个抽象方法的类一定是抽象类。(有抽象方法就是抽象类,是抽象类可以没有抽象方法)

    解释:

    抽象方法:

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

    抽象方法与抽象类:

    当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写,否则其子类的该方法仍然是abstract的,而这个子类也必须是抽象的,即声明为abstract。abstract抽象类不能用new实例化对象,abstract方法只允许声明不能实现。如果一个类中含有abstract方法,那么这个类必须用abstract来修饰,当然abstract类也可以没有abstract方法。 一个抽象类里面没有一个抽象方法可用来禁止产生这种类的对象。

    Java中的抽象类:

    abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。

    在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。

    展开全文
  • 是的,我们可以Java声明一个没有抽象方法抽象类抽象类意味着隐藏实现并向用户显示函数定义。既有抽象方法又有非抽象方法抽象类。对于抽象类,我们不能直接创建对象。但是我们可以间接地使用子类对象创建一...
  • –抽象成员只能存在于抽象类中 –抽象类可以有非抽象成员 –抽象类的派生类必须实现抽象方法体 –抽象类只能用作基类,无法实例化 补充: 重写:不同对象对于同一个方法调用的不同行为(指不同对象收到相同消息时,会...
  • Java抽象方法抽象类

    千次阅读 2022-04-22 15:41:00
    1、抽象方法 如果父类的方法本身不需要实现任何功能,仅仅是为了定义方法签名,目的是让子类去...因为这个抽象方法本身是无法执行的,所以Person无法被实例化。并且编译器会报错无法编译Person,因为它包含抽...
  • 抽象类必须要有抽象方法吗?

    万次阅读 2019-07-22 14:36:51
    2.抽象类可以没有抽象方法 3.一个类如果包含抽象方法,那么这个类必须是抽象类,否则编译就会报错。 4.最关键的一点就是如果一个类是抽象类,那么这个类是不能被实例化的。 如下: public abstract cl...
  • 目录1. 如何调用抽象类中的抽象方法?2. 如何调用接口中的抽象方法? 1. 如何调用抽象类中的抽象方法? 2. 如何调用接口中的抽象方法
  • 抽象成员只能存在于抽象类中 抽象类可以有非抽象成员(侧重族群的概念) 抽象类的子类必须实现抽象方法体 抽象类you构造函数 抽象类只能用作基类,无法实例化(new) 抽象类不能被实例化。 抽象类存在的意义: 1.抽象...
  • 七、java抽象类和抽象方法详解

    千次阅读 2020-12-24 10:53:56
    一、概述: 1、什么是抽象? 提到抽象,人们自然会想到将『抽象』作为其一大特性的『面向对象编程(OOP)』(面向对象的四大特性:抽象、封装、继承、多态)确实,『抽象』这个概念只出现『面向...类中有属性、方法
  • 接口中只能定义常量和抽象方法,对。Java语言,接口是一个抽象类型,是抽象方法的集合,通常以关键字interface来声明。一个通过继承接口的方式,从而来继承接口的抽象方法。接口中只能定义常量和抽象方法,对...
  • 抽象类+抽象方法

    千次阅读 2021-01-09 15:56:30
    对于这样的场景,我们可以将动物类,设计为抽象类抽象类不能被实例化对象,只是提供了所有的子类的共有的部分,为了给所有的子类定义公共属性 abstract class Animal{ String name; int age; public void eat(){} ...
  • C#抽象类、抽象属性、抽象方法

    千次阅读 多人点赞 2020-06-10 00:51:31
    前言:本博文讲述了C#面向对象抽象类,通过本博文的阅读,读者可以掌握C#抽象类的概念、应用、好处以及一些特性。 文章目录一、抽象类概念二、示例讲解三、抽象类的作用四、使用抽象类的好处五、抽象类总结 一、...
  • 抽象类是不是必须要有抽象方法

    千次阅读 2021-08-15 23:57:30
    面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类抽象类除了不能实例化对象之外,...
  • Java抽象类和接口

    千次阅读 多人点赞 2022-04-08 15:17:42
    各位铁汁们大家好呀!今天让我们继续学习java,看看java抽象类和接口到底是什么? 里面也会讲到多态呀,一起来看看吧
  • Java中抽象类方法的重写

    千次阅读 2020-11-10 22:29:33
    1. 抽象类 关键字:abstract 类:用来描述一类具体的事物 抽象类:抽象的、模糊的、不具体的类 Java的普通类中是不允许多继承的,原因是会出现调用 不明确的问题;...抽象类中可以有构造器,但是不能创建
  • Java抽象类中的静态方法

    万次阅读 2018-12-06 20:09:26
    抽象类中是可以有静态方法的,被子类继承后可以通过子类的实例化对象调用;也可以直接通过抽象类和子类的类名来调用,就像其他的静态方法一样。同样的静态变量也可以使用相同的方法访问。 实例: package ...
  • 11.抽象类必须要有抽象方法吗?

    千次阅读 2020-07-26 22:07:01
    (有抽象方法就是抽象类,是抽象类可以没有抽象方法) 解释: 抽象方法: java的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要...
  • Java抽象类中是否可以有构造方法

    千次阅读 2021-03-23 10:40:52
    之所以产生这个疑问,是因为Java抽象类本身的要求抽象类是不能被实例化的,抽象类只能作为其他类的父类,或者通过向上转型指向其子类。所以既然抽象类是不允许被实例化的,那么他的构造方法存在是否还有实际意义? ...
  • 抽象类和抽象方法定义及讲解?

    千次阅读 多人点赞 2019-02-26 17:26:23
    首先说抽象类: (1)抽象类只能作为其他类的基类,它不能直接实例化,对抽象类不能使用new 操作符。 (2)抽象类中可以包含抽象成员,但非抽象类中不可以。...(1)抽象方法必须声明在抽象类中。 ...
  • 抽象类和抽象方法

    千次阅读 2018-08-12 19:46:26
    摘自牛客网总结 含有abstract修饰符的class即为...abstract class类中定义抽象方法必须具体(Concrete)子类中实现,所以,不能有抽象构造方法抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么...
  • 如何调用抽象类中的非抽象方法

    千次阅读 2020-10-18 15:40:28
    2.在抽象类中的成员方法可以包括一般方法和抽象方法。抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实
  • 分享给大家供大家参考,具体如下:一、Java抽象类1、抽象类的说明面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个...
  • java抽象类可以被继承吗?

    千次阅读 2021-03-06 06:39:35
    Java语言,用abstract 关键字来修饰一个类时,这个类叫作抽象类抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。抽象类可以看作是对类的进一步抽象。面向对象领域,抽象类主要用来进行...
  • 抽象类总结 : ① 声明 : 抽象类中使用 abstract 声明 ; ② 成员 : 抽象类中既可以定义正常属性和方法 , 又可以定义抽象的属性和方法 ;...⑤ 特征 : 抽象方法只能定义在抽象类中 , 正常类中不能有抽象方法 ;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 546,759
精华内容 218,703
关键字:

抽象方法只能在抽象类中吗

友情链接: RT25USB-SRC-V2.0.6.0.tar.gz