面向对象(四)——抽象类和接口

//定义接口
    interface IUSB
    {
        //开始读取USB
        void Start();

        //关闭USB
        void Stop();
    }

    //做一个鼠标类来实现USB接口
    class ShuBiao:IUSB
    {
        public void Start()
        {
            Console.WriteLine("鼠标启动了");
        }
        public void Stop()
        {
            Console.WriteLine("鼠标停止了");
        }
    }

一、抽象类

抽象类,只为继承而出现,不定义具体的内容,只规定该有哪些东西

一般抽象类中只放置抽象方法,只规定了返回类型和参数

比如:

人    - 有吃饭,睡觉方法

男人 - 继承人抽象类,必须实现吃饭,睡觉的方法主体

女人 - 继承人抽象类,必须实现吃饭,睡觉方法的主体

抽象类中可以有普通属性,通过子类来使用

1.关键字:abstract

2.抽象类可以包含抽象方法普通方法

3.abstract关键字可以定义方法为抽象方法,抽象方法可以没有函数体

4.抽象类无法被实例化,抽象类主要做为一个基类,让别的类继承

5.sealed和abstract关键字不能同时出现

6.如果一个子类继承自抽象类,那么子类中必须实现所有的抽象方法

7.如果子类中没有实现父类的抽象方法,那么该子类必须是抽象类

8.如果一个类里面包含抽象方法,那么该类一定是抽象类

注:有抽象方法的,一定是抽象类 ;抽象类中,不一定有抽象方法

//定义抽象类
    public abstract class DongWu
    {
        public void Run()
        {

        }
        public abstract void Eat();
    }

    //做一个人类来继承抽象类
    public class Ren:DongWu
    {
        public override void Eat()
        {
            Console.WriteLine("吃熟食");
        }
    }

二、接口

即极度抽象的类

作用:可以将程序拆分成多个模块,定义子类必须实现的功能

比如:

总公司 --制定了规章制度(接口)--公司必须对员工进行考勤

子公司1--遵循总公司的规章制度--具体实现考勤--打卡

子公司2--遵循总公司的规章制度--具体实现考勤--点名

注:接口和抽象类的区别:

1. 写法区别   

关键字:interface   

没有class关键字  类名一般用I开头   

不用写public因为本身就是public,不用写abstract接口里面所有的都是抽象的

2. 接口里面不能包含普通成员

3. 凡是继承接口的类,全部要实现接口里面的方法

时间: 2024-11-05 20:25:53

面向对象(四)——抽象类和接口的相关文章

php面向对象之抽象类和接口理解

结合网上文档和官方文档,自我测试总结心得,实践出真知,时间匆忙,写的不详请谅解! 结合实例分析: <?php header("Content-type:text/html;charset=utf-8"); abstract class People{ protected $age=22; public $height=1.70; abstract function work(); //抽象方法没有方法体,子类必须实现. function run(){} function Peop

013_面向对象_抽象类和接口

1.抽象类(abstract) (1)特点 ①方法只有声明没有实现时,该方法就是抽象方法,抽象方法必须定义到抽象类中,该类也必须被abstract修饰 ②抽象类不可以被实例化,因为调用抽象方法没有意义. ③抽象类必须有子类覆盖所有的抽象方法,该子类才可以实例化,否则,这个子类还是抽象类 (2)常见问题 ①抽象类中有构造函数吗? 有,用来给子类对象初始化 ②抽象类可以不定义抽象方法吗? 可以.目的是不让该类创建对象,通常这个类中的方法有方法体,却没有内容 ③抽象关键字不可以和哪些关键字共存? pr

Java面向对象之抽象类,接口

抽象类: 含有抽象方法的类被声明为抽象类 抽象方法由子类去实现 含有抽象方法的类必须被声明为抽象类 抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法 抽象方法: 声明而未被实现的方法 抽象类不能被实例化 子类实现不了, 由下一级子类去实现, 当前类声明为抽象类, 继承的这个方法声明为抽象方法 抽象方法的权限修饰符必须为public abstract //人类 public class Person { private String name; //自定义属性 引用类型 宠物

【代码学习】PHP面向对象之抽象类与接口

一.什么是抽象方法? 一个方法如果没有方法体(不使用"{}",直接使用分号结束的方法,才是没有方法体的方法),则这个方法就是抽象方法 1.声明一个方法,不使用{},而直接分号结束 2.如果是抽象方法,必须使用abstract(抽象关键字来修饰) 二.什么是抽象类 1.如果一个类中有一个方法是抽象的方法,则这个类就是抽象类 2.如果声明一个抽象类,则这个类必须使用abstract关键字修饰 <?php //声明一个抽象类,要使用abstract关键字识别 abstract clas

黑马程序员_面向对象之抽象类与接口

抽象类(abstract)???? 当编写一个类时,时常会为该类定义一些方法,这些方法的使用用以描述该类的行为方式,那么这些方法都有具体的方法体.但是在某些情况下,某个父类只是知道子类应该包含怎样的放过,但是无法精确的知道这些子类是如何实现这些方法,例如定义一个GetTime类,该类提供了一个计算某一段程序运行时间的gettime方法,但是无法知道具体运行什么方法体,这时就需要使用抽象方法来实现了. 抽象类概念 当多个类中出现相同功能,但是功能主体不同,这时候可以进行向上抽取,只抽取功能定义,而

面向对象,抽象类。接口。类库

抽象与接口,库类的使用 抽象类:抽象类,只为继承而出现,不定义具体的内容,只规定该有哪些东西:一般抽象类中只放置抽象方法,只规定了返回类型和参数:比如: 人 - 有吃饭,睡觉方法: 男人 - 继承人抽象类,必须实现吃饭,睡觉的方法主体: 女人 - 继承人抽象类,必须吃饭,睡觉方法的主体: 抽象类中可以有普通属性,通过子类来使用: 1.关键字:abstract 2.抽象类可以包含抽象方法和普通方法3.abstract关键字可以定义方法为抽象方法,抽象方法可以没有函数体4.抽象类无法被实例化,抽象类

Java中抽象类和接口的区别(读书笔记)

Java的抽象类和接口 抽象类和接口是两个容易混淆的概念,但有一句话能很好地将这两者区分开来,即抽象类是事物的抽象,而接口是行为的抽象.抽象类抽象出来的是一类事物,事物中包含了一些固有的属性和行为,而接口更多的是提供固有属性行为之外的延伸行为.打个比方,可以把动物看成为抽象类,类中有一些固有属性,如身高体重,还有一些共有行为,如吃饭和睡觉,所有的动物都遵循着这些属性和行为.除此之外,有些动物还能飞,但并不是所有的动物都具有飞行这种能力,此时飞行只是事物的延伸功能,相当于一个接口. 一.抽象类 抽

java提高篇(四)-----抽象类与接口

接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 一.抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的.如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类.比如new Animal

面向对象设计中抽象类与接口的区别

在OOD(面向对象设计)中,经常会用到抽象类或接口,[注:在C++中,没有接口的概念,只有抽象类:而在Java中两者都存在].而在使用过程中,也许会有不少人认为接口和抽象类差不多,然后就想当然地觉得可以相互完全替换.事实上,虽然他们有很多相似点,但也有很大差异. 1.抽象类与接口的出现条件 在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样.并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类.抽象类往往用来表征我们

php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一系列个体的集合,类是一个抽象的概念2.什么是对象?从类中拿到的具有具体属性值得个体,称为对象,对象是一个具体的个体 所以,面向对象即我们专注对象来处理问题,通过从一个个具有属性和功能的类中拿到对象来处理问题. 下面我们再来细说下面向对象的三大特征:继承/封装/多态 一.继承 在PHP中我们主要通关E