【【接口】】
格式:interface{}
接 口的出现将“多继承”通过另一种形式体现出来,即“多实现”
【接口】:初级理解,可以认为是一个特殊的抽象类。
一个抽象类中可以有抽象方法和非抽象方法
当一个抽象类中的方法全都是抽象的,那么该类可以通过接口的形式来表示
关键字:interface 用于定义接口
关键字:class 用于定义类
接口定义时,格式特点:
1,接口中的常见定义:常量,抽象方法。
2,接口中的成员修饰符是固定的
成员常量:public static final
成员函数:public abstract
记住:
接口中的成员都是public的
接口是不能创建对象的。因为有抽象方法。
需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化
否则子类是一个抽象类
关键字【implements】实现 雷同与继承 extends
接口可以被类多实现:一个类可以实现多个接口.(多继承的另一种体现)
*/
package DayXuexi;
interface Inter{
public static final int NUM=3;
public abstract void show();
}
interface InterA{
public static final int NUN=6;
public abstract void method();
}
class Demo{
public void function(){}
}
//implements新的关键字,雷同与继承,不过这里叫实现。因为父类都是抽象的,子类必须去实现
class Test implements Inter,InterA{
public void show(){}
public void method(){}
//一个类可以实现多个接口
}
//【】一个类在继承一个类的时候,可以实现多个接口:
class TestA extends Demo implements Inter,InterA{
public void show(){}
public void method(){}
}
/*类与类之间是继承关系
* 接口和接口之间也有关系叫【继承】
* 并且接口可以多继承
*/
interface A{
void methodA();
}
interface B extends A{
void methodB();
}
interface C extends B{
void methodC();
}
interface F{
void methodF();
}
//接口多继承
interface G extends F,B{
void methodG();
}
class D implements C{
/*这个类想要创建对象必须覆盖几个方法?3个写完才能编译过去。
* 想要实现必须加public
*/
public void methodC() {
}
public void methodB() {
}
public void methodA() {
}
}
/* 接口多继承
* 如果被继承的接口中有相同方法名且返回类型不同的方法时,
* 切记不可同时继承,程序会不知道返回那一个
*/
class H implements G{
public void methodB() {}
public void methodA() {}
public void methodG(){}
public void methodF(){}
}
public class Demo_interface {
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); //接口调用
}
}
----------------------------------------------------------------------------------------------------------
【【接口2】】
package DayXuexi;
/*
* 【接口】的特点
* 1,接口是对外暴露的规则
* 2,接口是程序的功能扩展, (后期由子类实现
* 3,降低了耦合性,便于模块化开发
* 4,接口可以用来多实现
* 5,类与接口之间是实现关系,而且类可以继承一个类的同事实现多个接口
* 6,接口与接口之间可以有继承、多继承关系。
*
* 耦合性,精密联系程度
*/
abstract class StudentA{
abstract void study();
void sleep(){
System.out.println("sleep");
}
/* 抽烟不是所有学生的共性行为。
void smoke()
{
System.out.println("smoke");
}
*/
}
/*把抽象 提取出来,需要的时候在用*/
interface Smoking{
void smoke();
}
class Zhangs extends StudentA implementsSmoking {
void study(){}
public void smoke(){
}
}
/*学生都具备学习,睡觉的共性,而抽烟只是某些人有,所有不能放在一起
* 来一个学生有抽烟就实现抽烟的接口,没有就不实现
* 同时,老师也有抽烟的,那么这个接口直接拿来用即可。
*
* 就是说,我们在实际开发中的时候,首先抽取事物的共性,编写父类,
* 同时提取一些有/部分有 的共性 封装成接口。
*
* 子类实现的时候,调用父类中所有的共性,而需要接口中的特性时,再实现即可。
* 父类是基本功能,接口是扩展功能。
我的理解就是:父类只是给了一个大概
*/
public class Demo_interface_2 {
}
黑马官网: http://edu.youkuaiyun.com/heima