——- android培训、java培训、期待与您交流! ———-
/*
接口
interface {}
接口中的成员修饰符是固定的。
成员常量:public static final
成员函数:public abstract
接口的出现将“多继承”通过另一种形式体现出来,即“多实现”
接口:初期理解,可以认为是一个特殊的抽象类
当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
class 用于定义类
interface 用于定义接口
接口定义,格式特点:
1.常量 抽象方法
2.固定修饰符:
成员常量:public static final
(方法)成员函数:public abstract
记住:接口中的成员都是public的
接口是不能创建对象的,因为有抽象的方法。
需要被子类的实现,子类的接口中的抽象方法全都覆盖之后,子类才可以实例化。
否则子类是一个抽象类。
接口可以被类多实现(即使方法名称相同,但【无】方法主体,下面实现只需覆盖一次即可,可由子类任意定义),
也是对多继承的转换形式,java支持多实现,
——java不支持多继承,【有】方法主体,父类中的方法有重复,导致子类调用出现问题
类与类之间是继承关系,类与接口之间是实现关系,接口与接口之间是继承关系(有内容是实现,无内容是继承)
【类与类】之间支持【单】继承。
只有在【接口与接口】之间支持【多】继承
*/
interface Inter
{
public static final int NUM = 3;//全局常量,常量要大写
public abstract void shou();//因没有方法主题可以让子类任意定义
}
interface InterA
{
public abstract void method();
}
class Demo
{
public void function(){}
}
class Test extends Demo implements Inter,InerA//Test 实现了 Inter,InterA【多实现】 Inter,InerA
//【 implements v.实现】【 extends v.延伸】
//一个类在继承了一个类同时 还是可以实现多个借口
//普通类继承:父类中有非抽象内容可以继承过来使用
//接口,全都都是抽象,将接口的抽象全都实现后才能实例化
{
public void shou(){}
//接口比较特殊,接口内成员都是public的【固定的】,要覆盖接口,权限是需要一样大,public修饰
//抽象类不同可以自己设置权限
public void method(){}
}
interface A
{
void methodA();
//int show();//返回值为int
}
interface B //extends A
{
void methodB();
//boolean show();//返回值为boolean
}
interface C extends B,A//A,B方法中show的返回值不同无法继承,是错误的
{
void methodC();
}
interface D extends C//需要建立 D 的对象 需要覆盖三个方法
{
public void methodA(){}
public void methodB(){}
public void methodC(){}
}
class InterfaceDemo
{
public static void main(String[] args)
{
Test t = new Test();//新建一个Test对象
System.out.println(t.NUM);//对象 调用成员
System.out.println(Test.NUM);//类 调用
System.out.println(Inter.NUM);//编译之后生成三个文件 Inter.class InterfaceDemo.class Test.class
//t.NUM = 4; //常量是无法重新赋值的
}
}
/*
视屏 96——接口的特点
接口是对外暴露的规则
接口是程序的功能扩展
接口可以用来多实现
类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口
接口与接口之间可以有继承关系
【基本】功能定义在【类】中
【扩展】功能定义在【接口】中
*/
abstract class Student
{
abstract void study();
void sleep()
{
System.out.println("sleep");
}
//abstract void smoke();//不是共性行为
}
interface Smoking//特有行为
{
void smoke();
}
class ZhangSan extends student implements Smoking//继承studet共性之后,还可以扩展(特有行为)继承之外扩展其他功能
//功能扩展
{
void study(){}
public void smoke(){}//必须有public
}
class LiSi extends Student
{
}
class
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}