java基础笔记(8)----接口

  1. 接口

    是特殊的抽象类,纯抽象类---所有方法都是抽象方法

接口和抽象类的区别;

相同点:

  1. 编译后,会分别生成对应的.class文件
  2. 都不能创建对象(实例化),但是可以生成引用(使用多态)

不同点:

  1. 抽象类有构造方法;接口没有构造方法;
  2. 接口中的属性 默认是public static final的(常量);
  3. 接口中的方法 默认是public abstract的。
  1. 定义

    1. 接口的语法:

      修饰符(public/默认) interface 接口名{}

      interface 子接口名 extends 父接口名1,父接口名2,.... {}

    2. 类和接口的关系:

      1. class 实现类名 implements 父接口名1,父接口名2,....{}
    3. 类、类、接口的关系:

      1. class 类名 extends 父类名 implements 父接口名1,父接口名2,....{}
    4. 注意:

      1. 1个类实现父接口,必须实现父接口中的所有方法;除非该类是抽象的;
      2. 实现类在实现父接口的方法 时,方法 的访问修饰符 必须是public的;
      3. 引用类型相互转换时,不论是否实现/继承某个接口,当强转成接口类型时,编译都OK;但 运行时,可能会出现ClassCastException。

package com.lvsling.test;

//接口

public
class TestInterface{

public
static
void main(String[] args){

MyClass m = new MyClass();

Super s = m; //多态(父类的引用
指向
子类的对象)

s.m();

MyClass m2 = (MyClass)s;

m2.m5();

Interface1 i1 = m;

i1.m1();

Interface2 i2 = m;

i2.m2();

Interface3 i3 = m; //多态
父接口的引用
指向
实现类的对象

i3.m3();

Interface4 i4 = m;

i4.m4();

i4.m1();

i4.m2();

}

}

abstract
class Class1{

public
static
final
int
M = 5;

public
abstract
void m1();

}

interface Interface1{

int
M = 5;

void m1();

}

interface Interface2{

void m2();

}

interface Interface3{

void m3();

}

interface Interface4 extends Interface1,Interface2{

void m4();

}

class MyClass extends Super implements Interface3,Interface4{

public
void m1(){}

public
void m2(){}

public
void m3(){}

public
void m4(){}

public
void m5(){}

}

class Super{

public
void m(){}

}

  1. 拓展与提升

    1. 在面向对象中,承在类与类中是单继承,接口与接口之间是多继承关系;类与接口之间是多实现关系。
    2. 接口----是规范,是标准(好处)

      1. 多继承关系

        1. 有了接口,把程序中的主要功能 和 次要功能分开,主要功能 使用单继承的简单性进行重点实现,一旦主要功能实现了 次要功能根据需要 定义在接口中 进行多实现。
      2. 弱耦合性

        1. 接口定义后,把 接口的使用者和实现者 进行了分离,借助 多态 降低了程序间的耦合性。
        2. 接口回调:接口定义后,先定义接口的使用者 后定义接口的实现者。

package com.lvsling.test;

public
class TestLamp {

public
static
void main(String[] args){

Lamp lamp = new Lamp();

//红灯泡使用

RedLight redLight = new RedLight();

lamp.setLight(redLight);

lamp.on();

}

}

// 标准-接口

interface Light{

void shine();

}

// 台灯--标准的使用者

class Lamp{

// 灯口--用标准

private Light light;

// 开

public
void on(){

light.shine();

}

// get/set

public Light getLight(){

return
this.light;

}

public
void setLight(Light light){

this.light = light;

}

}

// 红灯泡--标准的实现者

class RedLight implements Light{

public
void shine(){

System.out.println("发出红光…………");

}

}

原文地址:https://www.cnblogs.com/lvsling/p/8460281.html

时间: 2024-10-19 20:14:05

java基础笔记(8)----接口的相关文章

Java基础笔记 – Annotation注解的介绍和使用 自定义注解

Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Annotation的工作原理:2.@Override注解:3.@Deprecated注解:4.@SuppressWarnings注解:5.自定义注解:5.1.添加变量:5.2.添加默认值:5.3.多变量使用枚举:5.4.数组变量:6.设置注解的作用范围:6.1.在自定义注解中的使用例子:7.使用反射读取R

【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-import.html#1.2.values方法的使用: Java基础笔记 – 枚举类型的使用介绍和静态导入 本文由arthinking发表于4年前 | Java基础 | 暂无评论 |  被围观 8,332 views+ 1.枚举(Enum):1.1.枚举类型中的两个静态方法:1.2.values方法的使用:

2.35 Java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别

java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别 一.抽象 abstract作用:不能产生对象,充当父类,强制子类正确实现重写方法和类相比仅有的改变是不能产生对象,其他的都有,包括构造.属性等等任何一个类只要有一个抽象的方法就成了抽象类 抽象方法 public abstract A();①方法是抽象的,这个类也是抽象的:②子类必须重写抽象方法,除非子类也是抽象类 抽象类可以没有抽象方法,但一般不这么设计 二.接口 interface 接口也是Java的一种引用数据类型(J

[Java基础笔记]数组

Java基础笔记 定义数组: int[] numbers = new int[100]; //方法一 double[] num = new double[10]; int[][] a = new int[2][5]; 通过new创建的数组,元素默认值为0(0.0) int[] scores = {5,4,33,12,46}; //方法二 int[][] a = { //位数不足,自动补0 {5,3,2,1,6}, {10,12,14,15}, }; 数组特性:存储的都是同类型数据:长度定义后不可

Java学习笔记之接口

一.接口的概念与定义 首先考虑一个简单的接口的定义: public interface Output { int MAX_LINE = 40; void out(); void getData(String msg); } 定义接口使用关键字interface 修饰符interface前面的public可以省略,如果省略,则采用默认访问控制,即只有在相同包结构的代码才可以访问此接口 接口不可以有构造方法(区别于类中的构造方法) 接口里面的所有成员,包括常量.方法等都是public访问权限,所以在

java 基础笔记 基本数据类型对象包装类

基本数据类型对象包装类: 为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作. 用于描述该对象的类就称为基本数据类型对象包装类. 基本数据类型 包装类 byte Byte short Short int Integer long Long float Float double Double char   Character boolean Boolean 该包装对象主要用于基本类型和字符串之间的转换. 基本类型-->字符串 1.基本类型数据+"&quo

Java学习笔记_23_List接口实现类

23.List接口实现类: List接口继承了Collection接口,它是一个允许存在重复项的有序集合. 1>实现类ArrayList: ArrayList类支持可随需要而增长的动态数组.数组列表以一个原大小被创建,当超过了它的大小, 类集自动增大,当对象被删除后,数组就可以缩小. 优点:ArrayList类对于使用索引取出元素用较高的效率,他可以用索引快速定位对象. 缺点:ArrayList类对于元素的删除或插入速度较慢. 构造方法: · ArrayList(): 构造一个初始容量为10的空

Java基础05 实施接口(转载)

经过封装,产品隐藏了内部细节,只提供给用户接口(interface). 接口是非常有用的概念,可以辅助我们的抽象思考.在现实生活中,当我们想起某个用具的时候,往往想到的是该用具的功能性接口.比如杯子,我们想到加水和喝水的可能性,高于想到杯子的材质和价格.也就是说,一定程度上,用具的接口等同于用具本身.内部细节则在思考过程中被摒弃. 在public和private的封装机制,我们实际上同时定义了类和接口,类和接口混合在一起.Java还提供了interface这一语法.这一语法将接口从类的具体定义中

Java学习笔记_21_Collection接口

21.Collection接口: 1>容器类的添加.删除: · add(Object o) :将对象添加到集合. · Remove(Object o) :删除集合中与o相匹配的对象. 2>容器中类的查询: · Size(): 返回集合中元素的个数. · isEmpty(): 判断集合中是否包含元素. · contains(Object o): 判断集合中是否包含指定元素. · iterator(): 返回集合的一个迭代器,用来访问该集合的元素. · contains(Collection c)

java基础学习总结——接口

java基础学习总结——接口 一.接口的概念 JAVA是只支持单继承的,但现实之中存在多重继承这种现象,如“金丝猴是一种动物”,金丝猴从动物这个类继承,同时“金丝猴是一种值钱的东西”,金丝猴从“值钱的东西”这个类继承,同时“金丝猴是一种应该受到保护的东西”,金丝猴从“应该受到保护的东西”这个类继承.这样金丝猴可以同时从 “动物类”.“值钱的东西类”.“应该受到保护的东西” 这三个类继承,但由于JAVA只支持单继承,因此金丝猴只能从这三个类中的一个来继承,不能同时继承这三个类.因此为了封装现实生活