面向对象_接口

一、接口的概念:

  1、初期理解,可以是一个特殊的抽象类。当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示

   2、class用于定义类,interface 用于定义接口

二、接口定义时,格式特点:
     1、接口中常见的定义:常量,抽象方法
     2、接口中的成员都有固定修饰符。
           常量:public static final
           方法:public abstract

   3、记住:接口中的成员都是public的。
       只要是interface里面成员都有固定修饰符,可以省略但一般为了好看都要加上

三、类与类之间的关系

    类与类之间是继承关系  extends

    类与接口之间是实现关系  implements

    接口之间的关系也是继承extends(可以多继承)

四、接口的定义

    接口是不可以创建对象的,因为有抽象方法 ,需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以被实例化 否则子类是一个抽象类

    接口可以被类多实现(接口里的方法都是抽象的没有方法体,而继承父类的方法有方法体) 也是对多继承的转换形式 java支持多实现

interface A{
    void methodA();
}
interface B //extends A//java在接口之间支持多继承 因为接口都没有方法体
{
    void methodB();
}
interface C extends B,A{
    void methodC();
}
class D implements C{
    public void methodA(){}
    public void methodB(){}
    public void methodC(){}
}
public class InterfaceDemo {
    public static void main(String[] args) {
        Test t = new Test();
        System.out.println(t.NUM);
        System.out.println(Test.NUM);
        System.out.println(Inter.NUM);

        //t.NUM = 4;//错误,因为NUM是一个常量了
    }
}
interface Inter{
    public static final int NUM = 3;
    public abstract void show();
}

interface InterA{
    public abstract void show();
}

class Demo{
    public void function(){}
}
//java 在继承一个类的同时还可以支持多实现
class Test extends Demo implements Inter,InterA {
    public void show(){}
}

五、接口的扩展性

  接口大多用于扩展功能用的,(基本功能定义在类中,扩展功能定义在接口中)

 1 public class InterfaceTest1 {
 2     public static void main(String[] args) {
 3
 4     }
 5 }
 6 abstract class Student{
 7     abstract void study();
 8     void sleep(){
 9         System.out.println("sleep");
10     }
11 }
12 //将一些不是所有人都具有的功能提取出来 封装成一个接口,需要的人就去实现他,不需要的就不用去实现他
13 interface Smoking{
14     public abstract void smoke();
15 }
16
17 //如果ZhangSan吸烟那就就实现Smoking这个接口
18 class ZhangSan extends Student {
19     void study(){}
20 }
 1 public class InterfaceTest2 {
 2     public static void main(String[] args) {
 3
 4     }
 5 }
 6
 7 //该程序的设计思想有问题,不要把一个对象设计成一个类,
 8 abstract class Student{
 9     abstract void study();
10     void sleep(){
11         System.out.println("sleep");
12     }
13 }
14
15 //提供一个接口,只要让需要的类就去实现它,不需要的就不用实现它,这样就可以多了很多功能
16 interface Smoking{
17     public void smoke();
18 }
19
20 //zhangsan这人抽烟就继承Smoking
21 class zhangsan extends Student implements Smoking{
22     void study(){}
23     public void smoke(){}
24 }
25 class lisi extends Student{
26     void study(){}
27 }

六、抽象类和接口的异同点:

  相同点:

    1、都是不断向上抽取出来的

  不同点:

    1、抽象类需要被继承,而且只能但继承。

       接口需要被实现,而且可以多实现

    2、抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象反法

       接口中只能定义抽象方法,必须由子类去实现

    3、抽象类的继承,是 is a关系,在定义该体系的基本共性内容

       接口的实现时 like a关系,在定义体系额外功能

时间: 2025-01-02 03:03:49

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

java面向对象_接口

java接口 interface,是一个抽象类型,是抽象方法的集合,接口通常以interface来申明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念.类描述对象的属性和方法.接口则包含类要实现的方法. 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法. 接口与类相似点: 一个接口可以有多个方法. 接口文件保存在.java结尾的文件中,文件名使用接口名. 接口的字节码文件保存在.class结尾的文件中. 接口相应的字节

Java面向对象_接口应用——策略模式

概念:定义了一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户应用而独立变化. 接口抽象的就是某种方法. OO设计原则:1.面向接口编程  2.封装变化  3.多用组合,少用继承 1 public class Practice14 { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 //用父类的引用指向子类对象 6 Bird d=new Bi

JavaSE入门学习21:Java面向对象之接口(interface)(二)

一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.java源文件代码: public class Test{ public static void main(String[] args){ //实现接口Singer Singer s1 = new Student("Amy"); s1.sing(); s1.sleep(); s1.study

黑马程序员_Java基础_接口

------- android培训.java培训.期待与您交流! ---------- 0.接口知识体系 Java接口的知识体系如下图所示,掌握下图中的所有知识就可精通接口. 1.接口概论 1)接口概念 接口是从多个相似类中抽象出来的规范,接口中不包含普通方法,所有方法都是抽象方法,接口不提供实现.接口体现的是规范和实现分离的哲学.规范和实现分离正是接口的好处,让软件系统的各个组件之间面向接口耦合,是一种松耦合的设计.接口定义的是多个类共同的公共行为规范,定义的是一组公用方法. 2)接口与抽象类

Java面向对象程序设计--接口和内部类

1.接口的定义: In the Java programming language, an interface is not a class but a set of requirements for classes that want to conform the interface. 说明: 1) Interface 不是class,虽然interface具有class的一些特点,例如能够继承,能够定义相同类型的变量,而且和C++的abstract class非常像,但Java 的inter

Java千百问_05面向对象(005)_接口和抽象类有什么差别

点击进入_很多其它_Java千百问 1.接口和抽象类有什么差别 在Java语言中.抽象类abstract class和接口interface是抽象定义的两种机制. 正是因为这两种机制的存在,才赋予了Java强大的面向对象能力.抽象类abstract class和接口interface在对于抽象定义方面具有非常大的类似性.甚至能够相互替换.因此非常多开发人员在进行抽象定义时对二者的选择显得比較任意.事实上,两者之间还是有非常大的差别.对于它们的选择能反映出对问题本质的理解.对设计意图的理解. 了解

面向对象_多态_抽象类_接口

09.01_面向对象(多态的概述及其代码体现) A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案例演示 代码体现多态 public class Demo1_polymorphic { /** * 成员变量:编译时看左边(父类),运行时看左边(父类) * 成员方法:编译时看左边(父类),运行时看右边(子类) * @param args */ public static void main(Str

11_Java面向对象_第11天(接口、多态)

今日内容介绍1.接口2.多态 01接口的概念 * A:接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的 实现类(相当于接口的子类)来完成.这样将功能的定义与实现分离,优化了程序设计. 请记住:一切事物均有功能,即一切事物均有接口. 02接口的定义 A: 接口的定义 与定义类的class不同,接口定义时需要使用interface关键字. 定义接口所在的仍为.java文件,虽然声明时使用的为inter

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

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