abstract AND interface 基础

<?php 

    //到底应该用抽象类还是接口;
    //如果要继承多个方法规范,那就用接口;
    //如果你要共享一个方法体内容,那么就用抽象类;

/* abstract 抽象类
    不能多继承

    abstract class Computer {

        abstract public function _run();
        public function _run2(){
            echo ‘我是父类的普通方法2!!‘;
        }
    }

    class NoteComputer extends Computer {
        public function _run(){
            echo ‘我是子类方法!‘;
        }
    }

    $notecomputer = new NoteComputer();
    $notecomputer->_run();
    $notecomputer->_run2();
*/
/*interface
    成员字段必须是常量
    接口方法必须是抽象方法~ 并且不能写abstract
    子类继承接口的说法,叫做实现, 可以多实现

*/
    interface Computer {
        const NAME = ‘联想!!!‘;

        public function _run();
        public function _run2();

    }

    interface Computer2 {
        public function _run3();
    }

    class NoteComputer implements Computer,Computer2 {
        public function _run(){
            echo ‘我重写了run!‘;
        }
        public function _run2(){
            echo ‘我重写了run2!‘;
        }
        public function _run3(){
            echo ‘我重写了run3!‘;
        }
    }

    $notecomputer = new NoteComputer();
    $notecomputer->_run();
    $notecomputer->_run2();
    $notecomputer->_run3();
    echo NoteComputer::NAME;

    echo Computer::NAME;
?>
时间: 2024-08-24 12:36:08

abstract AND interface 基础的相关文章

java abstract与interface解析

java abstract与interface解析 abstract 定义 在面向对象的概念中,所有的对象都是通过类来描述.但是,反过来,不是所有的类都是用来描述对象的(把类具体化).如果一个类没有包含足够的信息来描述一个具体的对象,那么这个类就是抽象类. 比如,我们进行一个图形编辑软件的开发,就会发现问题域中存在圆,三角形这样一些具体的概念,它们是不同的,但是它们又都属于形状这样一个概念.形状这个概念在问题域中是不存在的,它就是一个抽象的概念.正是因为抽象的概念在问题领域没有对应的具体概念,所

PHP namespace、abstract、interface、trait使用介绍

小菜鸟一枚,一直搞不懂 namespace.abstract.interface.trait 这些关系,就抽出几天时间研究,做个总结,不足之处希望大家指正交流. namespace 命名空间 介绍:顾名思义,就是给空间命名.其实最简单的可以把每个文件夹都理解为一个空间,然后我们给这个空间一个定义(namespace),让其成为正式空间.当然并不是说一个文件夹就需要一个空间(最好是),在同一个文件夹.文件也可以定义不同的空间. 作用:假如有两个班(两个文件夹),都有一个叫做 test(文件) 的学

abstract和interface

1.abstract 的应用 1 abstract class ShapesClass 2 { 3 public abstract int Area(); 4 } 5 class Square : ShapesClass 6 { 7 int side = 0; 8 9 public Square(int n) 10 { 11 side = n; 12 } 13 // Area method is required to avoid 14 // a compile-time error. 15 p

继承与接口,abstract,interface,final,上转型对象

如果你要创建一个水果类,可以先定义什么是水果 /** *用abstract关键字来定义水果,里面所有用abstract修饰的方法都是定义水果的,不需要写方法体,由非抽象的子类来实现且必须实现该方法 */ public abstract class Fruits{ String color = "黄色"; public abstract void juice(); public void color(){ System.out.println(""+color); }

Java中abstract与interface

抽象类(abstract class)的特点: 1.抽象类.抽象方法都必须使用abstract修饰. 2.抽象类中,可以有非抽象方法,甚至可以是没有任何方法或变量的空类. 对于抽象类中不定义抽象方法的用意在于:使该类不能被创建对象. 3.抽象方法,是不能有方法体的. 对于抽象方法的访问限制符,可以是public.protected.不写. 4.抽象类,不能使用new创建对象. 5.抽象类的抽象方法,如果只有部分抽象方法被子类重写,则该子类依然是抽象类:如果抽象类的全部抽象方法被子类重写,则该子类

abstract和interface的区别

abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract class和interface的选择显得比较随意.其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解.对于设计意图的理解是否正确.合理.本

面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】

  本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing/ 本文版权归作者和博客园共有,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接 ,否则保留追究法律责任的权利. 面向对象概念 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 •强调的是功能行为 面向对象 •将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向过程   在一个结构体中定义窗口的大小

java中abstract和interface的區別(轉)

(一)概述    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存 在,才赋予了Java强大的 面向对象能力.abstract class和interface之间在对于抽象类定义的支持方面具有 很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的 选择显得比较随意.其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对 于问题领域本质的理 解.对于设

新手浅谈C#关于abstract和interface

abstract:抽象类,是对某一类对象的抽象,继承抽象类的类和抽象类是属于关系 interface:接口,可以说是一种规范,继承接口的类表达则是,我继承了这个接口,我能做什么 举个常用的例子:抽象一个animal类,马(horse)继承animal类,但是有一种马叫天马,他能飞. 1 public abstract class Animal 2 { 3 public void EatFood() 4 { 5 //some code 6 } 7 } 8 9 public class Horse: