吉祥知识 > 百科 > 抽象方法的实现 抽象方法的实现由什么提供

抽象方法的实现 抽象方法的实现由什么提供

导读抽象方法必须在子类中实现,这句话对吗?答抽象方法必须在子类中实现,这句话正确。当一个方法为抽象方法时,意味着这个方法应该被子类的方法所重写,否则其子类的该方法仍然...

今天吉祥知识就给我们广大朋友来聊聊抽象方法的实现,以下关于观点希望能帮助到您找到想要的答案。

抽象方法必须在子类中实现,这句话对吗?

抽象方法必须在子类中实现,这句话对吗?

抽象方法必须在子类中实现,这句话正确。

当一个方法为抽象方法时,意味着这个方法应该被子类的方法所重写,否则其子类的该方法仍然是abstract的,这个子类由于继承父类,拥有抽象方法,因此它也是抽象类,即声明为abstract。

abstract抽象类不能用new实例化对象,abstract方法只允许声明不能实现。如果一个类中含有abstract方法,那么这个类必须用abstract来修饰,当然abstract类也可以没有abstract方法。 一个抽象类里面没有一个抽象方法可用来禁止产生这种类的对象。

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

扩展资料

抽象方法具有以下特性:

1、抽象方法是隐式的 virtual 方法。

2、只允许在抽象类中使用抽象方法声明。

3、因为抽象方法声明不提供实实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号 ({ })。例如: public abstract void MyMethod();

4、抽象类必须为所有接口成员提供实现。

有关抽象类和抽象方法的问题:

a. 一个抽象类可以同时包含抽象方法和非抽象方法。

b. 抽象方法的目的在于指定派生类必须实现与这一方法关联的行为。

c. 抽象方法只在派生类中真正实现,这表明抽象方法只存放函数原型(方法的返回类型,使用的名称及参数),而不涉及主体代码。

参考资料来源:百度百科-抽象方法

C# 接口interface、Virtual方法(虚方法)、Abstract方法(抽象方法)

一、Virtual方法(虚方法)

     virtual 关键字用于在基类中修饰方法。virtual的使用会有两种情况:

     情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法。那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法。

     情况2:在基类中定义了virtual方法,然后在派生类中使用override重写该方法。那么在对派生类实例的调用中,该虚方法使用的是派生重写的方法。

二、Abstract方法(抽象方法)

     abstract关键字只能用在抽象类中修饰方法,并且没有具体的实现。抽象方法的实现必须在派生类中使用override关键字来实现。

1、接口interface

public interface IPerson

        {

            void getName2(string s);//不包含方法主体

            object getName4();//不包含方法主体

        }

        public class Chinese : IPerson

        {

          public void getName2( string s)

            {

            }

            public string getName3()

            {

                return "111";

            }

            public object getName4()

            {

                return (object)"11";

            }

        }

//接口IPerson中方法不能用public abstract static 等修饰,无字段变量,无构造函数。

//类Chinese 必须实现 IPerson中的各个方法

2、abstract:声明抽象类、抽象方法

1.抽象方法所在类必须为抽象类

2.抽象类不能直接实例化,必须由其派生类实现。

3.抽象方法不包含方法主体,必须由派生类以override方式实现此方法,这点跟interface中的方法类似。

public abstract class Book2

        {

            public Book2()

            {

            }

            public abstract void getPrice(); //抽象方法,不含主体

            public virtual void getName() //虚方法,可覆盖

            {

                MessageBox.Show("this is a test:virtual getName()");

            }

            public virtual void getContent() //虚方法,可覆盖

            {

                MessageBox.Show("this is a test:virtual getContent()");

            }

            public void getDate() //一般方法,若在派生类中重写,须使用new关键字

            {

                MessageBox.Show("this is a test: void getDate()");

            }

        }

        public class JavaBook2 : Book2

        {

            public override void getPrice() //实现抽象方法,必须实现

            {

                MessageBox.Show("this is a test:JavaBook2 override abstract getPrice()");

            }

            public override void getName() //覆盖原方法,不是必须的

            {

                MessageBox.Show("this is a test:JavaBook2 override virtual getName()");

            }

        }

3、virtual:标记方法为虚方法

1.可在派生类中以override覆盖此方法

2.不覆盖也可由对象调用

3.无此标记的方法(也无其他标记),重写时需用new隐藏原方法

abstract 与virtual : 方法重写时都使用 override 关键字

接口定义以大写字母I开头。方法只定义其名称,在C#中,方法默认是公有方法;用public修饰方法是不允许的,否则会出现编译错误;接口可以从别的接口继承,如果是继承多个接口,则父接口列表用逗号间隔。

接口可以通过类来实现,当类的基列表同时包含基类和接口时,列表中首先出现的是基类;类必须要实现其抽象方法;

抽象方法是一种仅有方法头声明,方法体为一对空的花括号的方法。( )

抽象方法是一种仅有方法头声明,方法体为一对空的花括号的方法,是对的。

抽象方法是一种在类中声明的方法,它只有方法头声明,而没有方法体。它的定义形式为:方法名(参数列表)。

抽象方法是一种占位符,它表示一个方法应该被实现,但具体的实现细节由子类来提供。由于抽象方法没有方法体,因此它不能直接被调用。它只能被继承的子类实现或重写。

抽象方法在面向对象编程中非常有用。它使得父类可以定义一组通用的行为或操作,而将具体的实现留给子类。这种设计方式使得代码更加灵活和可扩展。

例如,假设我们有一个抽象类动物,其中包含一个抽象方法发出声音。我们知道所有的动物都会发出声音,但每种动物发出的声音是不同的。我们可以将发出声音定义为抽象方法,由每种动物自己的子类来实现。这样,每个子类都可以根据自己的特点来实现这个方法,使得代码更加灵活和可重用。

抽象方法的作用:

1、强制子类实现特定操作:抽象方法是一种规定子类必须实现的方法,从而通过这种方式强制子类实现某些功能,确保子类具有某些特定的行为。这种方式可以提高代码的规范性和可靠性。

2、实现多态性:抽象方法和抽象类支持多态性,即不同的子类可以通过实现相同的抽象方法来实现不同的功能。这种方式可以提高代码的扩展性和灵活性,使得代码更加易于维护和修改。

3、提高代码复用性:通过继承抽象类和实现抽象方法,子类可以重用父类的代码,避免重复编写相同的代码,提高代码的利用率和可维护性。

4、隐藏实现细节:抽象类可以隐藏具体实现的细节,只提供一个通用的接口给子类使用。这种方式可以降低类之间的耦合度,提高代码的可读性和可维护性。

5、定义接口:抽象方法可以用来定义接口,规定具有相似行为或属性的类的共同特征。这种方式可以使得代码更加模块化和可扩展,便于维护和修改。

普通类和抽象类有哪些区别

普通类和抽象类的区别是:实例化、抽象方法、继承和多态。

1、实例化:普通类可以被实例化,即创建具体的对象。当我们创建一个普通类对象时,会为该类的所有成员变量分配内存,并调用构造函数初始化这些变量。抽象类不能被实例化。抽象类是一种特殊的类,它包含一个或多个抽象方法。抽象方法是没有具体实现的方法,只定义了方法的签名。

2、抽象方法:普通类可以包含普通的方法,这些方法可以有具体的实现。普通方法定义了如何处理数据,并可以访问类的成员变量和调用其他方法。抽象类包含一个或多个抽象方法。抽象方法是没有具体实现的方法,只定义了方法的签名。子类必须提供抽象方法的具体实现。

3、继承和多态:普通类可以被其他类继承,子类可以重写父类的方法,实现多态。多态是指子类可以根据需要提供不同的方法实现,使得子类对象可以当作父类对象使用。抽象类不能被继承,但可以被子类实现。子类必须提供抽象类中定义的所有抽象方法的具体实现。

抽象类的特点:

1、抽象方法:抽象类中可以包含一个或多个抽象方法。抽象方法是没有具体实现的方法,只定义了方法的签名。子类必须提供抽象方法的具体实现,否则子类也必须声明为抽象类。这使得抽象类可以用于定义一组共享的基本行为,而子类可以根据需要提供具体的实现。

2、不能被实例化:抽象类不能被实例化,即不能创建具体的对象。这是因为抽象类包含一个或多个抽象方法,没有提供具体的实现。当我们尝试创建抽象类对象时,会抛出一个异常。

3、继承限制:抽象类不能被其他类继承,但可以被子类实现。子类必须提供抽象类中定义的所有抽象方法的具体实现,否则子类也必须声明为抽象类。这使得抽象类可以用于定义一组共享的基本行为,而子类必须提供具体的实现。

4、多态:由于抽象类可以定义抽象方法,子类可以根据需要提供不同的方法实现,使得子类对象可以当作父类对象使用。这实现了多态,提高了代码的复用性和灵活性。

5、构造函数限制:抽象类必须包含一个构造函数,用于初始化抽象类中的成员变量。这是因为抽象类不能被实例化,所以必须提供一个构造函数来初始化其成员变量。

内容参考:百度百科-抽象类

c#抽象类内是否要有方法的实现

定义抽象类和抽象方法:

abstract

抽象类特点:

1、不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例

2、一个抽象类可以包含抽象和非抽象方法,当一个类继承于抽象类,那么这个派生类必须实现所有的的基类抽象方法

3、通过声明派生类也为抽象,我们可以避免所有或特定的虚方法的实现,这就是抽象类的部分实现

4、一个抽象类能够继承另一个非抽象类,另外,继承了基类的方法,添加新的抽象和非抽象方法是可行的

5、一个抽象类也能从一个接口来实现,这种情况,我们必须为所有的方法提供方法体,这些方法是来自接口

6、一个抽象类必须为所有的接口成员提供实现,一个用于实现接口的抽象类可能把接口方法安排到抽象方法上

抽象方法特点:

1、abstract关键字只能用在抽象类中修饰方法,并且没有具体的实现。抽象方法的实现必须在派生类中使用override关键字来实现

2、一个抽象方法可以看作是一个虚函数,抽象方法的声明只能在抽象类中

3、抽象方法声明只提供一个无实现的方式,没有方法体

4、方法体的实现被覆写方法提供,覆写方法是一个非抽象类的成员

5、抽象属性的行为和抽象方法相像,除了不同的声明形式

6、在一个静态属性中使用abstract 是一个错误

7、一个抽象属性能够通过派生类使用 override 实现

Virtual 用于定义虚方法:

virtual 关键字用于在基类中修饰方法。virtual的使用会有两种情况

1、在基类中定义了virtual方法,但在派生类中没有重写该虚方法。那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法

2、在基类中定义了virtual方法,然后在派生类中使用override重写该方法。那么在对派生类实例的调用中,该虚方法使用的是派生重写的方法

从上文,大家可以得知关于抽象方法的实现的一些信息,相信看完本文的你,已经知道怎么做了,吉祥知识希望这篇文章对大家有帮助。

本文来自网络,不代表本站立场,转载请注明出处:https://www.jxnyyy.com/baike/68530.html

作者: 吉祥知识

吉祥知识为您提供最全面的生活百科网站大全,主要为您提供数码、汽车、财经、美食、财经、科技、健康、教育、创业、电商、影视、百科等资讯信息,在这里可以找到您所需的答案,解决您所困惑的问题。
夜爬华山攻略
可视人流费用
联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@wangzhan.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部