/*
* 接口
* 引用数据类型:
* 类,接口,数组;
*
* 接口是一种引用数据类型,可以看作是一个特殊的类,它存在的目的是为了解决没有多重继承引起的功能弱的问题而设计的,一个类只能有一个父类,但是这个类却可以实现多个接口;
*
* 接口还可以看作是只有抽象方法的类,即接口的所有方法都必须被实现;
* 接口声明的关键字是interface,代替了class;而普通类的继承关键字extends也变成了implements(实现);
* 但是其作用和普通类中是一样的,只不过是为了区分而已;
*
*
* 1 定义接口的语法:
* [修饰符列表] interface 接口名 { }
* 2 接口中的内容:
* 只能是常量(public static final 常量名)和抽象方法
* 3 抽象方法不需要abstract修饰,默认就是public的(不需要加)
* 4 接口可以看作是一个特殊的抽象类,就是完全抽象的,没有普通的方法
* 5 接口中是没有构造方法的,也就是接口无法被实例化
* 6 一个类可以实现多个接口,但是只能继承一个类
* 7 一个非抽象类实现接口,需要将接口中所有的方法都实现(重写/覆盖)
* 那抽象类实现接口呢?
* 抽象类实现接口,可以实现任意个:0~N个
* 8 接口之间:
* 可以继承,不仅如此,接口还可以多继承,相比来说,类只能单继承
*
* 常量和静态数据的区别:
* 都是在类加载的时候就初始化,但是静态数据可以进行多次赋值
*
* 常量:一般都必须使用public static final修饰,在接口中声明常量,这些都是可以省略的;
* 命名方式:大写字母加下划线的形式命名;
*
* 注意: 上述部分需要区分接口和接口间的"继承",类和接口间的"实现",类和类的"继承";
*/ public class JavaSE{
public static void main(String[] args){
F f = new F();
f.m1();
f.m2();
f.m3();
f.m4();
}
} interface A{//接口A
public void m1();
} interface B{//接口B
public void m2();
} interface C{//接口C
void m3();//接口中方法的public是可以省略的;
} interface D extends A,B,C{//接口的多继承
void m4();
} class MyClass implements B,C{//普通类对接口的实现
public void m2(){
System.out.println( "覆写B接口的m2()方法" );
}
public void m3(){
System.out.println( "覆写C接口的m3()方法" );
}
} abstract class E implements D{//抽象类对接口的实现
public static final int A = ;//常量的声明方式
char C = '中';
public void m1(){ }
public void m2(){ }
public void m3(){ }
public void m4(){ }
} class F extends E{//需要覆写E中所有的方法
public void m1(){
System.out.println( "覆写m1()方法" );
}
public void m2(){
System.out.println( "覆写m2()方法" );
}
public void m3(){
System.out.println( "覆写m3()方法" );
}
public void m4(){
System.out.println( "覆写D中的m4()方法" );
}
}

最新文章

  1. [python]WindowsError的错误代码详解
  2. MATLAB 例子研究 Motion-Based Multiple Object Tracking
  3. unsigned long类型转换为CString出现的问题
  4. Python解释器
  5. 01_反射_04_反射类的main方法
  6. VS 2010不显示头文件源文件和所有以前分类的文件夹,*.h 和*.cpp都显示在同一个文件
  7. 代码先行-log4Net初体验
  8. UFLDL教程笔记及练习答案二(预处理:主成分分析和白化)
  9. [Windows Phone] 地图覆叠层控制项(MapOverlay )
  10. ASPCMS改造中
  11. sqlilabs 1-4
  12. 剑指offer——栈的压入、弹出序列
  13. leetCode练习1
  14. ABC卡
  15. npm和yarn
  16. 论文笔记:Capsules for Object Segmentation
  17. 03 flask数据库操作、flask-session、蓝图
  18. [转]WPF入口Application
  19. iOS 获取设备的各种信息的方法
  20. linux 学习第十五天(vsftpd配置)

热门文章

  1. ASP.NET repeater添加序号列的方法
  2. UIViewController、UINavigationController与UITabBarController的整合使用
  3. 斯坦福IOS开发第五课(第一部分)
  4. 【带权并查集】【HDU3038】【How Many Answers Are Wrong】d s
  5. JAVA 年老代收集器 第10节
  6. Javascript基础示例:用JS写简易版贪吃蛇(面向对象)
  7. linux chmod使用说明
  8. php Mysql 和Mysqli数据库函数整合
  9. 使用ConcurrentDictionary实现轻量缓存
  10. php的系统常量