抽象方法和抽象类

转载自http://www.cnblogs.com/li1056822533/p/6397243.html

1、什么是抽象方法?

我们在类里面定义的没有方法提的方法就是抽象方法。所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时方法还要加一个关键字"abstract"来修饰。

例如: 
abstract function fun1(); 
abstract function fun2();

2、什么是抽象类?

只要一个类里面有一个方法是抽象方法,那么这个类就定义为抽象类,抽象类也要使用“abstract”关键字来修饰;在抽象类里面可以有不是抽象的方法和成员属性,但只要有一个方法是抽象的方法,这个类就必须声明为抽象类,使用“abstract”修饰。

例如:

abstract class demo{

var $test;

abstract function fun1();

abstract function fun2();

}

3、抽象类有什么作用?

上例子中定义了一个抽象类“demo”使用了“abstract”来修饰,在这个类里面定义了一个成员属性"$test",和两个抽象方法“fun1”和“fun2”还有一个非抽象的方法fun3();那么抽象类我们怎么使用呢?最重要的一点就是抽象类不能产生实例对象,所以也不能直接使 用,前面我们多次提到过类不能直接使用,我们使用的是通过类实例化出来的对象,那么抽 象类不能产生实例对象我们声明抽象类有什么用呢?我们是将抽象方法是做为子类重载的模 板使用的,定义抽象类就相当于定义了一种规范,这种规范要求子类去遵守,子类继函抽象 类之后,把抽象类里面的抽象方法按照子类的需要实现。子类必须把父类中的抽象方法全部 都实现,否则子类中还存在抽象方法,那么子类还是抽象类,还是不能实例化对;为什么我 们非要从抽象类中继承呢?因为有的时候我们要实现一些功能就必须从抽象类中继承,否则 这些功能你就实现不了,如果继承了抽象类,就要实现类其中的抽象方法;

例如:

abstract class mode{

var $test;

abstract function fun1();

abstract function fun2();

function fun2(){

....

}

}

$mode = new mode(); //抽象类只能为产生实例对象,所以这样做是错的,实例化对象交给子类

class test extends mode{

function fun1(){

....

}

function fun2(){

....

}

}

$test = new test(); //子类可以实例化对象,因为实现了所有父类的抽象化方法

时间: 2024-10-25 05:19:13

抽象方法和抽象类的相关文章

5.4-全栈Java笔记:面向对象进阶之对象的转型 | FINAL关键字 |抽象方法和抽象类

对象的转型(casting) 引用变量只能调用它编译类型的方法,不能调用它运行类型的方法.这时,我们就需要进行类型的强制转换! [示例1]对象的转型 public class   TestCasting { public static void   main(String[] args) { Object obj = new   String("北京");  //向上可以自动转型 //obj.charAt(0)      //无法调用.编译器认为obj是Object类型而不是Strin

C#中的虚方法,抽象方法,抽象类以及接口

前言 众所周知,面向对象三大特点:封装.继承.多态.而今天我们将要学习的都是以多态为基础的,而什么是多态呢?举个不恰当的例子,比如你的对象,今天面对你是一副姿态,明天她给你戴绿帽子又是另一副模样(这个例子是从一个博主那看到的),你的对象还是同一个人,但是可以根据使用的对象来展现不一样的面貌,这,就是多态.简单来说:多态就是在继承的前提下,不同对象调用相同方法却表现出不同的行为.注:本次示例使用VS Code. 虚方法:virtual 虚方法存在于相对于需要实现多态的子类的父类当中,同时也是实现多

Java中没有抽象方法的抽象类的存在意义

含有抽象方法的类一定是抽象类,但是抽象类不一定含有抽象方法. 总结: 没有抽象方法的抽象类的作用: 1.抽象类不能new实例化 2.抽象类可以有构造方法,但是构造方法不能是抽象方法 3.通过子类继承,可以调用抽象类的构造方法 无抽象方法的抽象类 案例: 1.    装饰器模式(the decorator pattern) 2.      HttpServlet 它的所有方法, 作为默认实现的方法,都是非抽象的, 但它本身却带上abstract 的标志.这么作,就可以让它的子类,各取所需,仅覆盖它

20141014C#面向对象抽象方法,抽象类,接口

里氏代换原则.可以用子类的对象替代父类的对象. 抽象依赖原则.依赖——形参,关联 一.抽象方法: 在一些父类中,某些行为不是非常明确,因此无法用代码来具体实现,但是类必须具备此方法,因此把这样的方法定义为抽象方法.abstract 特点:1.只声明,不实现.2.加abstract关键字. eg: 1 public abstract class Ren //类中含有抽象方法,此类也必须是抽象类. 2 { 3 public abstract void Eat(); //以分号结束,没有花括号 4 }

抽象方法与抽象类

类更多是规范,我只告诉你你需要做,具体怎样做是子类自己去实现----规范 抽象方法只能在抽象类中--如果不在抽象类,那么调用方法的时候却没有实现. 一. 父类也不知道子类到底如何实现,它只是告诉子类必须去实现. abstract  抽象的:一种概念,一个声明,它是没有任何实现的 抽象方法必须在抽象类中,但是抽象类中不仅仅只包含抽象方法,还可以有非抽象成员---子类继承使用 构造函数也可以让子类通过base方式调用 子类不一定需要去实现父类的抽象成员,但是必须是重写方法,同时将重写的方法也定义为a

PHP抽象方法、抽象类以及接口

 1.什么是抽象方法? 我们在类里面定义的没有方法提的方法就是抽象方法.所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时方法还要加一个关键字"abstract"来修饰. 例如: abstract function fun1(); abstract function fun2();  2.什么是抽象类? 只要一个类里面有一个方法是抽象方法,那么这个类就定义为抽象类,抽象类也要使用"abstract&quo

php中的抽象方法和抽象类

1.什么是抽象方法? 我们在类里面定义的没有方法提的方法就是抽象方法.所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时方法还要加一个关键字"abstract"来修饰. 例如: abstract function fun1(); abstract function fun2(); 2.什么是抽象类? 只要一个类里面有一个方法是抽象方法,那么这个类就定义为抽象类,抽象类也要使用"abstract"

PHP中抽象方法、抽象类和接口的用法

在类中,没有方法体的方法就是抽象方法. abstract 可见性 function 方法名称(参数1,.....);      // 如果没有显示地指定可见性,则默认为public 如: public function hello($args); abstract function work();            // 修饰符abstract,也可以省略 abstract class 类名{ 属性; 方法; 抽象方法; } 抽象类的特点: 抽象类不能实例化,只能被继承. 抽象类不一定有抽象

【PHP面向对象(OOP)编程入门教程】19.抽象方法和抽象类(abstract)

在OOP语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法做为外部代码访问其的接口.而抽象方法就是为了方便继承而引入的,我们先来看一下抽象类和抽象方法的定义再说明它的用途. 什么是抽象方法?我们在类里面定义的没有方法体的方法就是抽象方法,所谓的没有方法体指的是,在方法声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时还要加一个关键字“abstract”来修饰: 例如: abstract function fun1(); abstract