面向对象————接口

接口是另一种定义数据类型的方式。它和类非常相似的。

相同之处:都有成员变量和成员方法

也可以形成继承关系

不同之处:接口中的属性都是常量(final)

接口中的方法是抽象方法(没有方法体)

引入接口的原因:Java只支持单重继承,每个类只能有一个超类。但实际应用中有时候需要多重继承--使用接口,一个类可以实现多个接口。

接口的定义

[public] (表示可以被不同包中的类或接口使用,缺省时具有包内可访问性) interface(interface关键字表示接口)  接口名(任意有效标识符 ) [extends (接口支持多继承,多个父接口之间用逗号分隔)父接口1,父接口2,…]{

[public][static][final]  数据类型   属性名=常量值;

[public abstract]   返回值类型 方法名([形参表]);

接口的属性必须用public static final修饰,是系统默认的,可部分省略或全部省略,但一般都写出final。
int  MAX_SIZE = 50;  等价于
public static final  int  MAX_SIZE = 50;

接口的方法默认为public abstract,一般不写修饰符,可省略--接口中的方法都是抽象方法。

例5.19 接口的定义。

public interface Figure {

final double pi=3.14;

abstract void area();

}

实现接口

接口定义后不能直接创建对象,必须由类实现接口后创建类的对象。每个类只能继承一个基类,但可以实现多个接口。类定义形式如下:

[public]  class 类名 extends 基类 implements (可实现多个接口,多个接口之间用逗号分隔

)接口1,…{

//类体

}(注意:类实现接口,就继承了接口中的所有成员变量和成员方法。由于接口中的方法都是抽象的,因此实现接口的类必须重写这些方法。)

public class Circle implements Figure{

double radius;

public Circle(double r){

radius=r;

}

public void area(){

System.out.println("圆的面积="+pi*radius*radius);

}

}

注意:

实现接口中的抽象方法时,除去掉关键字abstract外,方法头必须和接口定义中的方法头完全相同,并且public修饰符不能省略。

如果类实现了多个接口,必须重写这些接口中的所有方法。

接口不是类,不能使用new实例化接口,但可以声明接口变量。接口变量可以指向一个实现了该接口的类的对象,例如,
Shape s=new Shape();          //错
Shape s=new Circle();            //对

可以使用instanceof来判断对象是否实现了某个接口。

虽然可以使用接口变量来引用实现接口类的对象,但这种引用只能引用接口的成员,否则会发生编译错误。

例如,class Rectangle implements Shape{}

Shape s;

s=new Circle();           s.area();

s=new Rectangle();    s.area();

强调:一个接口定义一个协定,实现接口的类必须遵守其协定。接口最适合为不相关的类提供通用功能,利用接口提供的方法,程序可以多态地处理这些完全不同的类的对象。

接口的继承

接口具有多重继承的特点,即一个接口可以有多个父接口。新的子接口继承所有父接口的全部方法和常量。接口继承的格式为:

[public] interface 子接口  extends  父接口1,父接口2,…{

//静态属性;

//抽象方法;

}

接口和抽象类

接口和抽象类很像,它们都具有如下特征:

接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承。

接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。

区别

设计目的不同

接口体现的是一种规范,类似于整个系统的“总纲”,它制定了系统各模块应该遵循的标准 。因此一个系统中的接口不应该经常改变

抽象类作为多个子类的共同父类,体现的是模板式设计。抽象类可以被当成系统实现过程中的中间产品,这个中间产品已经实现了部分功能,但这个产品还不能当成最终产品,必须更进一步的完善,这种完善可能有几种不同方式。

用法不同

(1)接口里只能包含抽象方法

(2)接口里不能定义静态方法

(3)接口里只能定义静态常量属性

(4)接口不包含构造方法

(5)接口里不能包含初始化块

(6)一个类可以实现多个接口

(1)抽象类可以包含普通方法。

(2)抽象类可以定义静态方法

(3)抽象类既包含普通属性,也可以包含静态常量属性

(4)抽象类里构造方法不用于创建对象,是让子类调用

(5)抽象类可以包含初始化块

(6)一个只能继承一个父类

时间: 2024-10-24 01:28:38

面向对象————接口的相关文章

静态成员、final成员、面向对象接口

静态成员 静态属性定义时在访问控制关键字后面加static 在类定义中使用静态成员的时候,用self关键字后面跟着::操作符,在访问静态成员的时候::后面需要跟$符号 在类定义外部访问静态属性,用类名加::操作符的方法来访问 1.静态属性用于保存类的公有数据 2.静态方法里面只能访问静态属性 3.静态成员不需要实例化对象就可以访问 4.类的内部可以通过self 或者static关键字访问自身静态成员 5.可以通过parent关键字访问父类的静态成员 6.可以通过类的名称在类定义外部访问静态成员

Java面向对象-接口

Java面向对象-接口 接口定义:一种特殊的"抽象类",没有普通方法,由全局常量和公共的抽象方法所组成: 1,接口的定义 接口定义用关键字 interface 我们给下实例代码: 1 package com.java1234.chap03.sec12; 2 3 /** 4 * 定义一个接口A 5 * @author user 6 * 7 */ 8 public interface A { 9 10 /** 11 * 全局常量 12 */ 13 public static final S

.Net学习 第3季 C#面向对象 接口

.Net 视频学习第3季 C#面向对象 面向对象 接口 C++中一个类可以继承于多个类,但C#中不允许.因此如果想实现类似操作,需要接口,关键字interface public class Person { } public interface Iable { void test(); } public class Student:Person,Iable { void test() { Console.WriteLine("test"); } } 接口名通常以I开头able结尾. 接

面向对象--接口的实际应用--制定标准

面向对象--接口的实际应用--制定标准 博客分类: Java SE Flash工作 Java代码   interface USB { public void start(); public void stop(); } class Computer { public static void pugin(USB usb){              //此处只是接口对象的引用变量而已,相当于形参,接口不能恋情new创建实例对象,但能声明对象引用变量. usb.start(); System.out

Php面向对象 – 接口

接口:interface php中,我们可以规定,一个对象应该具有哪些公共的外部操作,使用interface来规定. 公共的方法就是接口. 用于规定一个对象应该用于哪些公共的操作方法(接口),这个也叫接口(公共操作方法的集合) 接口(interface结构,公共方法集合) 公共方法(接口方法) 定义: 用于限定某个对象所必须拥有的公共操作方法的一种结构,称之为接口(interface) 语法: 定义接口结构,使用interface关键字.接口内定义的都是一些公共方法. interface 接口名

java学习笔记之面向对象接口

面向对象接口总结 接口理解: 接口是功能的集合,接口的定义也使用.java文件,编译之后也产生.class文件.类的定义使用class  ,而接口的定义使用interface: 定义格式: 1 public interface 接口名{ 2 //常量定义格式:public static final 常量名(一般是大写) 3 成员变量->常量 4 //抽象方法定义:public abstract 返回值类型 方法名(参数列表) 接口中的方法全部是抽象方法 5 成员方法->抽象方法 6 } 7 /

java 面向对象接口的应用

简介 上几篇一直在说面向对象理论中的抽象类的一些具体应用.今天我来说说面向对象理论中另一个关键的东西.接口.抽象类是类,接口是特殊的抽象类.为什么要用那么多时间来研究抽象类和接口呢?因为只有这二个理论我们掌握了.理解了.会用了.才能大大提高程序的可扩展性和可维护性.以后在学什么设计模式也是一层窗户纸一捅就破. 概念 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 两种含

Java面向对象----->接口和抽象类

抽象类和接口(一)在实际的项目中,整个项目的代码一般可以分为结构代码和逻辑的代码.就像建造房屋时,需要首先搭建整个房屋的结构,然后再细化房屋相关的其它的结构,也像制造汽车时,需要首先制作汽车的框架,然后才是安装配件以及美化等工作.程序项目的实现也遵循同样的道理.在项目设计时,一个基本的原则就是--"设计和实现相分离".也就是说结构代码和逻辑代码的分离,就像设计汽车时只需要关注汽车的相关参数,而不必过于关心如何实现这些要求的制作.程序设计时也是首先设计项目的结构,而不用过多的关系每个逻辑

面向对象接口和类的区别

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

面向对象 & 接口 & 抽象类 详解

面向对象 什么是面向对象 为什么要使用面向对象 面向对象的特性 面向对象的缺点 面向对象的原则 其他编程范式 接口和抽象类 接口和多重继承 接口和抽象类 面向接口编程 原文地址:https://www.cnblogs.com/amei0/p/8600415.html