精华内容
下载资源
问答
  • 设计一个抽象类图形类,在该类中包含至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法 设计抽象类 就要使用abstract关键字,抽象类中的抽象方法要...
  • 抽象类必须要有抽象方法吗?

    万次阅读 2019-07-24 19:05:41
    答案是:不必须 这道题考察的是抽象类的知识: 抽象类必须有关键字abstract来修饰。 抽象类可以不含有抽象方法 如果一个包含抽象方法,则该类必须是抽象类 ...

    答案是:不必须

    这道题考察的是抽象类的知识:

    1. 抽象类必须有关键字abstract来修饰。
    2. 抽象类可以不含有抽象方法
    3. 如果一个类包含抽象方法,则该类必须是抽象类

    更多相关面试题可以查看      面试题系列

    展开全文
  • 面向对象的抽象方法抽象类:所有子类必须继承父类的方法,但是继承的时候具有不确定性,必须对父类的方法进行重写,这时候我们就把这被重写的方法定义成抽象方法,抽象方法不需要有方法体。这类也就是抽象...

    今天在这里和大家谈谈关于PHP面向对象中抽象类和抽象方法的内容,简单的来说,PHP中抽象类是一种不能被实例化的类,只能作为其他类的父类来使用,抽象方法则不能带方法体,下面我们就来看看具体的示例。

    面向对象的抽象方法和抽象类:

    所有子类必须继承父类的方法,但是继承的时候具有不确定性,必须对父类的方法进行重写,这个时候我们就把这个被重写的方法定义成抽象方法,抽象方法不需要有方法体。这个类也就是抽象abstruct。

    抽象类是一种不能被实例化的类,只能作为其他类的父类来使用!

    如果一个类中,有一个方法是抽象的,则这个类就是抽象类。

    如果一个类是抽象类,则这个类必须使用abstract修饰。

    抽象类是一种特殊的类,接口是一种特殊的抽象类,多态就要使用到抽象类或接口!

    测试代码如下:abstract class A{

    public $name = 'zym';

    abstract function show();

    }

    //$a = new A();//会报错

    class B extends A{

    public function show(){

    echo '继承父类的抽象方法并进行重写';

    }

    }

    $b = new B();

    $b->show();

    抽象类和普通类相似,包含成员变量和成员方法,两者的区别在于:抽象类至少要包含一个抽象方法,抽象方法没有方法体,其功能的实现只能在子类中完成。

    代码如下://定义一个名为【交通工具】的类

    abstract class Vehicle{

    private $name;//名称

    private $price;//价格

    private $brand;//品牌

    abstract function run();

    }

    class Truck extends Vehicle{

    function run(){

    echo '卡车在路上跑';

    }

    }

    class Plane extends Vehicle{

    public function run(){

    echo '飞机在天上飞';

    }

    }

    $plane = new Plane;

    $plane->run();

    注意:抽象方法一定不能带方法体!

    相关推荐:

    展开全文
  • 抽象类与抽象方法

    2017-06-26 16:35:00
    抽象类是否至少要有一个抽象方法,我查了很多资料,结果都是:“抽象类允许(但不要求)抽象类包含抽象成员”。但是一个抽象类里不写抽象方法就没有意义了,既然如此,还不如直接写个普通类? 在一个抽象类里可以不...

    抽象类是否至少要有一个抽象方法,我查了很多资料,结果都是:“抽象类允许(但不要求)抽象类包含抽象成员”。但是一个抽象类里不写抽象方法就没有意义了,既然如此,还不如直接写个普通类? 在一个抽象类里可以不声明抽象方法,这在语法上是没问题的,但实际来说,这样是没有任何意义的。也就是说,你为什么会选择写一个抽象类呢?当然是为了想某个方法能够被 OVERRIDE,以实现多态。后来查找 MSDN 结果如下:
    abstract 修饰符可以和类、方法、属性、索引器及事件一起使用。
    在类声明中使用 abstract 修饰符以指示类只能是其他类的基类。
    【抽象类】具有以下特性:
     抽象类不能实例化。
     抽象类可以包含抽象方法和抽象访问器。
     不能用 sealed 修饰符修改抽象类,这意味着该类不能被继承。
     从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实实现。在方法或属性声明中使用 abstract 修饰符以指示此方法或属性 不包含实现。
    【抽象方法】具有以下特性:
     抽象方法是隐式的 virtual 方法。
     只允许在抽象类中使用抽象方法声明。
     因为抽象方法声明不提供实实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号 ({ })。例如:
     public abstract void MyMethod();
     实现由 overriding 方法提供,它是非抽象类的成员。
     在抽象方法声明中使用 static 或 virtual 修饰符是错误的。除了在声明和调用语法上不同外,抽象属性的行为与抽象方法一样。
     在静态属性上使用 abstract 修饰符是错误的。
     在派生类中,通过包括使用 override 修饰符的属性声明可以重写抽象的继承属性。抽象类必须为所有接口成员提供实现。
    MSDN 中 C#语言规范的:10.1.1.1 抽象类。此文如下:
    abstract 修饰符用于表示所修饰的类是不完整的,并且它只能用作基类。抽象类与非抽象类
    在以下方面是不同的:
     抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
     允许(但不要求)抽象类包含抽象成员。
     抽象类不能被密封。
    当从抽象类派生非抽象类时,这些非抽象类必须具体实现所继承的所有抽象成员,从而重写那些抽象成员。在下面的示例中

    abstract class A
    {
    public abstract void F();
    }
    abstract class B: A
    {
    public void G() {}
    }
    class C: B
    {
    public override void F() {
    // actual implementation of F
    }
    }

    抽象类 A 引入抽象方法 F。类 B 引入另一个方法 G,但由于它不提供 F 的实现,B 也必须声明为抽象类。类 C 重写 F,并提供一个具体实现。由于 C 中没有了抽象成员,因此可以(但并非必须)将 C 声明为非抽象类。有关抽象类和抽象方法的问题,我个人也做了一些总结,如下:
    abstract 关键字用于将类指定为抽象类,这些抽象类可以派生出其他类。
     一个抽象类可以同时包含抽象方法和非抽象方法。
     抽象方法的目的在于指定派生类必须实现与这一方法关联的行为。
     抽象方法只在派生类中真正实现,这表明抽象方法只存放函数原型(方法的返回类型,使用的名称及参数),而不涉及主体代码。
     如果父类被声明为抽象类,并存在未实现的抽象方法,那么子类就必须实现父类中所有的 abstract 成员,除非该类也是抽象的。
     抽象类不能被实例化,使用 override 关键字可在派生类中实现抽象方法,经 override声明重写的方法,其签名必须与 override 方法的签名一致。

    转载于:https://www.cnblogs.com/vaevvaev/p/7081200.html

    展开全文
  • 抽象类中是否一定要有抽象方法

    千次阅读 2020-06-11 09:20:14
    抽象类可以没有抽象方法,但是如果你的一个类已经声明成了抽象类,即使这个类中没有抽象方法,它也不能再实例化,即不能直接构造一个该类的对象。 如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则...

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

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

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

    展开全文
  • 抽象类和抽象方法

    2015-08-12 20:29:26
    每个抽象类至少包含一个抽象方法。  抽象类和具体类的区别分别为:抽象类只能作为继承层次结构中的超类,不能创建抽象类的对象,而具体类(非抽象类)可以用来创建对象。  抽象超类是一组类的
  • 抽象方法抽象类

    2016-02-04 15:08:50
    当类中有一个方法,他没有方法体,也就是没有花括号,直接分号结束,象这种方法我们叫抽象方法,必须使用关键字abstract定义。 如: public abstract function fun(); 包含这种方法的类必须是抽象类也要使用
  • 抽象类是什么,就是包含至少一个抽象方法的类,用abstract修饰,也可以这么说,你可以用abstract声明一个抽象类,但是可以不要抽象方法,但是这又和普通类有什么区别呢。声明抽象类无非就是想实现抽象方法Override...
  • 抽象类和普通类相似,包含成员变量和成员方法,区别在于,抽象类至少包含一个抽象方法。 抽象方法没有方法体,其功能的实现只能在中完成。抽象方法也是使用abstract来修饰 abstract function abstactName(); <?...
  • 抽象类抽象类不能被实例化。...我们可以用一个abstract关键字来定义一个抽象类,示例如下:<?php abstractclassAnimal{ //抽象类中可以定义属性 protected$animal='animal'; //抽象类中也可...
  • 定义 ..."一个包含一个或多个纯虚函数的类叫抽象类抽象类不能被实例化,进一步 一个抽象类只能通过接口和作为其它类的基类使用."- C++ Programming Language by Stroustrup Chapter13.2 抽象类能...
  • 比如你要去定义许多动物的类,动物们同属于animal类,动物们都会eat,walk,所以可以去定义一个animal的抽象类,里面含有eat walk的抽象方法(定义就行,不用具体实现)。然后当需要建立某个动物的类时,就可以去继承...
  • 抽象类

    2017-04-06 22:31:04
    纯虚函数是指被标明为不具体实现的虚...包含纯虚函数的类称为抽象类一个抽象类至少具有一个纯虚函数。抽象类只能作为基类派生出新的子类,而不能在程序中被实例化。#include using namespace std; class CFigur
  • Php抽象类和抽象方法

    千次阅读 2016-11-23 20:42:32
    抽象类定义概述 抽象类不能被实例化。抽象类中只定义(或部分实现)子类需要的方法。子类可以继承它并且通过实现其中的抽象方法,使抽象类具体化。...我们可以用一个abstract关键字来定义一个抽象类,示例如下:
  • 抽象类(Abstract Class)抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。...
  • 什么是抽象类? 什么是抽象方法? 抽象类和抽象方法有什么特性? 抽象类的使用场景? 抽象类的作用? 抽象类和接口的区别? 抽象类和抽象方法怎么声明? 抽象类和抽象方法如何使用?
  • 任何一个类,如果它里面至少一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。 定义为抽象的类不能被实例化。抽象类必须有abstract关键字修饰。 例子: abstract class Person{} ...
  • 抽象类复习

    2021-02-27 19:02:15
    什么是抽象类抽象类就是将相似的方法抽取出相同的特性,它是用来给子类继承的,所以不能实例对象。 抽象类的定义:public abstract class 类名{} 抽象方法:抽象方法是没有方法体的方法,如public abstract ...
  • C# 抽象类与抽象方法

    2009-03-29 23:09:00
    朋友曾问我抽象类是否至少要有一个抽象方法,我查了很多资料,结果都是:“抽象类允许(但不要求)抽象类包含抽象成员”。但是一个抽象类里不写抽象方法就没有意义了,既然如此,还不如直接写个普通类?在一个抽象类...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,989
精华内容 55,595
关键字:

抽象类至少包含一个抽象方法