java基础篇 之 接口
组合接口时的名字冲突:
看下面这段代码:
interface I1 {
int f();
}
interface I2 {
void f();
}
interface I3 {
int f(int a);
}
class C {
public void f() {
System.out.println(1);
}
}
class C1 extends C implements I2 {
}
class C2 extends C implements I3 {
@Override
public int f(int a) {
return 1;
}
}
//这里报错了,是因为覆盖,实现跟重载被混在了一起
//C3继承了C,这个时候就有了一个void f()的方法
//C3实现了I1,就不得不实现它的int f()
//这个时候,C3就会出现两个同名函数,这显然是错误的
//class C3 extends C implements I1 {
//
//}
接口中的域:
因为放入接口中的任何域都是自动static和final的,所以接口就成了一种很便捷的用来创建常量的工具。
public class Interface {
// 成员变量省略了 public static final
// 接口不能初始化,如果要访问接口中的属性,只能通过类名直接调用,所以必须public+static
// 接口中的字段会被所有接口的实现类共享,所以不能被某一个子类所改变,以避免对其他子类造成影响
// 所以必须final
String ONE = "1";
String TWO = "2";
}
嵌套接口:
class Test {
private interface B {
void f();
}
class BImpl implements B {
@Override
public void f() {
System.out.println(1);
}
}
public B getB() {
return new BImpl();
}
}
public class Interface {
public static void main(String[] args) {
Test t = new Test();
t.getB();
}
}
我们看这种情况,提出一个问题,t.getB();的返回值我们要怎么接收呢?返回的是一个类中的私有的接口类型的对象。我们直接t.B肯定是不行的。这个时候,我们只能将返回值交给有权使用它的对象,所以我们要多定义一个属性或者方法
class Test {
private interface B {
void f();
}
class BImpl implements B {
@Override
public void f() {
System.out.println(1);
}
}
public B bRef;
public B getB() {
return new BImpl();
}
}
public class Interface {
public static void main(String[] args) {
Test t = new Test();
t.bRef = t.getB();
}
}
java基础篇 之 接口的更多相关文章
- 金三银四跳槽季,BAT美团滴滴java面试大纲(带答案版)之一:Java基础篇
Java基础篇: 题记:本系列文章,会尽量模拟面试现场对话情景, 用口语而非书面语 ,采用问答形式来展现.另外每一个问题都附上“延伸”,这部分内容是帮助小伙伴们更深的理解一些底层细节的补充,在面试中可 ...
- java基础篇---I/O技术(三)
接上一篇java基础篇---I/O技术(二) Java对象的序列化和反序列化 什么叫对象的序列化和反序列化 要想完成对象的输入或输出,还必须依靠对象输出流(ObjectOutputStream)和对象 ...
- 小白—职场之Java基础篇
java基础篇 java基础 目录 1.java是一种什么语言,jdk,jre,jvm三者的区别 2.java 1.5之后的三大版本 3.java跨平台及其原理 4.java 语言的特点 5.什么是字 ...
- java基础篇1
JAVA基础篇1 注释 单行注释 //这是一个单行注释,由两个斜杠组成,不能嵌套多行注释 多行注释 /*这是一个 多行注释 ,//里面不能嵌套多行注释, 但是可以嵌套单行注释*/ 文档注释 /**ja ...
- Java基础篇(JVM)——字节码详解
这是Java基础篇(JVM)的第一篇文章,本来想先说说Java类加载机制的,后来想想,JVM的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码的类加载机制似乎 ...
- java基础篇---I/O技术
java基础篇---I/O技术 对于任何程序设计语言而言,输入输出(I/O)系统都是比较复杂的而且还是比较核心的.在java.io.包中提供了相关的API. java中流的概念划分 流的方向: 输 ...
- java基础篇---HTTP协议
java基础篇---HTTP协议 HTTP协议一直是自己的薄弱点,也没抽太多时间去看这方面的内容,今天兴致来了就在网上搜了下关于http协议,发现有园友写了一篇非常好的博文,博文地址:(http: ...
- Java基础-通过POI接口处理xls
Java基础-通过POI接口处理xls 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Java基础-Collection子接口之Set接口
Java基础-Collection子接口之Set接口 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 学习Collection接口时,记得Collection中可以存放重复元素,也可 ...
随机推荐
- 一、uart&tty驱动
一.I.MX6 UART驱动 文件路径:\linux_IMX6_CoreC_3..35_for_Linux\drivers\tty\serial\imx.c .驱动入口函数:imx_serial_in ...
- 【Java】手动编写第一个Java程序,HelloWorld!
第一个Java程序HelloWorld! 环境前提:确保你已经配置好了JDK8的环境变量,和本体安装 打开文本编辑器,这里我使用的是EditPlus 编写代码: public class Hello{ ...
- 《JavaScript 模式》读书笔记(6)— 代码复用模式2
上一篇讲了最简单的代码复用模式,也是最基础的,我们普遍知道的继承模式,但是这种继承模式却有不少缺点,我们下面再看看其它可以实现继承的模式. 四.类式继承模式#2——借用构造函数 本模式解决了从子构造函 ...
- PDM添加唯一性约束
- sqli-labs通关教程----41~50关
第四十关 与前几关一样,闭合变成') 插入数据 ?id=1') ;insert into users(id,username,password) values('17','aaa','bbb'); % ...
- vue2.x学习笔记(二十二)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12633051.html. 自定义指令 简介 除了核心功能默认内置的指令([v-mode]和[v-show]等),v ...
- bluecms v1.6 sp1 代码审计学习
前言 正式开始代码审计的学习,拓宽自己的知识面.代码审计学习的动力也是来自团队里的王叹之师傅,向王叹之师傅学习. 这里参考了一些前辈,师傅的复现经验和bluecms审计的心得 安装 install.p ...
- Scala学习系列(三)——入门与基础
本课程源码共享于 https://github.com/tree1123/learning-scala 首先,打开IDEA编辑器的SbtExampleProject项目,我们将在这个项目下进行练习 本 ...
- MySQL server has gone away(在执行sql的时候,莫名的报错)
原文:https://cenalulu.github.io/mysql/mysql-has-gone-away/ MySQL Server has gone away报错原因汇总分析 原因1. MyS ...
- 不论是 Basic Auth 还是 Digest Auth,都会有 Authorization 字段
GET /dir/index.html HTTP/1.0 Host: localhost Authorization: Digest username="Mufasa", real ...