JavaSE复习日记 : 接口
/*
* 接口
* 引用数据类型:
* 类,接口,数组;
*
* 接口是一种引用数据类型,可以看作是一个特殊的类,它存在的目的是为了解决没有多重继承引起的功能弱的问题而设计的,一个类只能有一个父类,但是这个类却可以实现多个接口;
*
* 接口还可以看作是只有抽象方法的类,即接口的所有方法都必须被实现;
* 接口声明的关键字是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()方法" );
}
}
JavaSE复习日记 : 接口的更多相关文章
- JavaSE复习日记 : 算是个小前言吧
/* * Java也学了好久了,抽个时间整理了一下课堂笔记,也有些是我刚开始学会犯的一些错误.在这里浅谈一下JavaSE的基础内容,对我来说也是一种不错的复习方式. * * 那好,对于初学者来说,学习 ...
- JavaSE 复习_4 接口多态和内部类
△abstract不可以修饰成员变量 △一个类可以没有抽象方法,可以定义为抽象类,这样的目的是不能让其他类建立本类对象,交给子类完成. △abstract和static(可以被类名调用方法,但是抽象方 ...
- JavaSE复习日记 : 方法的调用和方法的重载
/* * 方法的调用和方法重载 */ /* * 什么是方法? * 方法就是一个有名字的代码段; * 方法的调用: * 在方法里调用另外一个方法里面的东西就是方法调用; * 或者可以认为"另外 ...
- JavaSE复习日记 : 循环终止语句(break/break outerFor/continue)
最近没网,但攒了几天的博客,这次逮到机会发博客,直接三篇走起; /* * 循环终止语句: break/ break outerFor/ continue */ /* * break语句 * 1. 用于 ...
- JavaSE复习日记 : 抽象类
/* * 抽象类 * 抽象: * 面向对象的三大核心思想; * 封装: 封装,ppp是封装的一部分 * 继承; * 多态: 父类的引用指向子类的对象 * 引用: 是指一个引用型变量 * 有哪些变量? ...
- JavaSE复习日记 : 继承关系和super关键字以及继承关系中方法的覆写
/* * 类的继承和super关键字 * * 软件开发的三大目的: * 可拓展性; * 可维护性; * 可重用性; * * 这里单说下可重用性这一项: * 为了代码复用,复用方式有: * 函数的调用复 ...
- JavaSE复习日记 : java包机制
这里是第一个文件,命名为JavaSE_01.java,我在这个文件里面声明了一个m1()方法,通过包机制,我将在另外一个文件夹里访问这个文件里的东西,确切的说是访问这个文件生成的一个class文件; ...
- JavaSE复习日记 : 实例化对象/构造方法和this关键字
/* * 实例化对象/对象的构造方法/this关键字 */ /* * 实例化对象 * * 就是实例化某一个类; * 从不同角度去理解的话就是: * 1. 从人的认知角度: * 就是具体化某个东西; * ...
- JavaSE复习日记 : 递归函数
/* * 递归函数 * 什么是递归? * 在一个方法的内部,对自身进行调用,又叫做递归调用 * * 递归和循环的编写都包括三部分: * 1. 初始值; * 2. 终止条件; * 3. 前进步长; * ...
随机推荐
- C# 中奇妙的函数–7. String Split 和 Join
很多时候处理字符串数据,比如从文件中读取或者存入 - 我们可能需要加入分隔符(如CSV文件中的逗号),或使用一个分隔符来合并字符串序列. 很多人都知道使用split()的方法,但使用与其对应的Join ...
- php这样实现伪静态
mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面.下面我详细说说它的使用方法 1.检测Apache是否支持mod_rewrite 通过php提供的phpinfo()函数查 ...
- ASP.NET mvc4 WEB API异常处理
当一个web api抛出一个异常后 此异常会被转化成一个HTTP响应 错误代码为500的服务错误 但是如果你不想让客户端看到500的错误码 你也可以自定义错误码 如下代码当用户输入的ID没有与之相关的 ...
- JqueryEasyUI中combox的数据不显示
在做一个用jeasyui做的项目中遇到一个问题,对应的数据取出来了但是数据项一直出不来后来经过检查原来是赋值的时候对应的数组元素的名称写的有问题,以后一定要注意对应的问题,不能犯类似的错误 funct ...
- Android入门——UI(8)——Fragment(2)
先演示一下如何在一个activity中放置两个Fragment,先定义两个Fragment <?xml version="1.0" encoding="utf-8& ...
- 2014.12.01 B/S之windows8.1下安装IIS
1.打开 控制面板——程序——程序和功能——启用或关闭windows功能 2.找到Internet信息服务 3.等待安装完毕即可 4.控制面板——系统和安全——管理工具——Intern ...
- 查询EBS在线用户SQL(R12)
SELECT U.USER_NAME, APP.APPLICATION_SHORT_NAME, FAT.APPLICATION_NAME, FR.RESPONSIBILITY_KEY, FRT.RES ...
- jquery.validate校验文件使用说明
官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一导入js库<script src="../js/ ...
- 游戏基础元素之精灵——Cocos2d-x学习历程(九)
1.创建精灵 在实际使用中,精灵是由一个纹理创建的.在不加任何设置的情况下,精灵就是一张显示在屏幕上的图片.通常精灵置于层下,因此我们首选在层的初始化方法中创建精灵,设置属性,并添加到层中. 有多种方 ...
- Struts2+Ajax实现检测用户名是否唯一
搞了慢慢两天,终于弄明白了怎么在Struts2框架中使用Ajax检测用户名的存在了.虽然,比起那些大牛们来,这速度确实够慢的,不过,最终弄出来还是满满的成就感啊. 闲话休提,言归正传.直接上代码: A ...