Java 基础三、接口与内部类
1. 在Java程序语言中,接口是对类的一种描述。例如Arrays类中sort方法声明可以对对象进行排序,但前提是对象所属的类必须实现Comparable接口。
public interface Comparable<T>
{
int compareTo(T other);
}
public interface Comparable{
int compareTo(Object obj);
}
接口中的所有方法自动地属于public,不必提供关键字。接口可以定义常量,但不能有自己的实例域,也不能实现方法。这些应该由实现接口的类来完成。
实现接口的方法:
- 通过implements关键字将类声明为接口的实现。
- 在类中实现接口的所有方法。并且所有方法都要写明public。
接口这名字起的真是形象。实际提供了一种对接方式。NB
2. 接口不是类,不能创造接口的实例。但是可以声明接口的变量。接口变量必须引用实现了接口的类的对象。可以用instanceof检查对象是否实现了某个接口。
3. 接口也可以被扩展。例如,假设有一个Moveable接口。
public interface Moveable(
void move (double x, double y);
}
public interface Powered extends Moveable{
double milesPerGallon();
double SOPEED_LIMIT = 100;
}
接口中的数据,默认设为 public static final。
一个类只能继承于一个基类,但可以实现多个接口,class Student implements Comparable, Cloneable.
4. 克隆对象。
Object类的clone方法是protected。自定义的类不能直接使用该方法,需要重写为public。
|
|
值得注意的是如果在重写的clone方法中调用了Object的clone方法,即super.close()。那么这个类就要写明implements Cloneable,否则会抛CloneNotSupportException。Cloneable接口为标记接口,其中并没有定义方法。
深浅拷贝怎么分清,还是只要弄清楚变量和实例到底是怎样的关系,自然迎刃而解,可以看这个java基础一。
5. 内部类
|
|
- 内部类可以访问其外部类的实例域。内部类在构造时获得了其外部类对象的引用。也可以说是编译器修改了所有内部类的构造器 ,添加 了一个外围类的引用参数。当然这是不可见的。
- 内部类可以声明为 私有的,这样对于其他类就是隐藏的。只有内部类 可以声明为private。
- 使用外围类的正规语法: OuterClass.this; 那么同样可以这样使用内部类,outer.new InnerClass(constrution parameters);
- 局部类,可以在方法或者代码块中定义一个内部类。这种局部内部类的作用域 被限定在声明这个类的块中。而且其不能用public和private声明。它对于这个块以外都是隐藏的
- 局部类可以访问声明为final的局部变量。
- 匿名内部类。语法
new SuperType(construction parameters){
inner class methods and data;
}SuperType可以是一个接口,也可以是一个类。当是接口时就要实现 接口的方法。由于匿名类没有类名,所以它也不能有构造函数。当扩展 类的时候,构造参数传给基类的构造。当实现接口时,不能传递参数。
- 在内部类不需要访问外围类对象的时候,应该 使用 静态内部类。 声明 在接口中的内部类会自动声明为public static.
Java 基础三、接口与内部类的更多相关文章
- JAVA基础之接口与内部类
接口与内部类 目录 接口与内部类 1. Lambda表达式 1. 关于懒计算 2. Predicate接口 3. 关于方法引用 4. 关于构造器引用 5. 关于变量的作用域 2. 内部类 1. 局部内 ...
- Java基础十--接口
Java基础十--接口 一.接口的定义和实例 /* abstract class AbsDemo { abstract void show1(); abstract void show2(); } 8 ...
- Java基础-面向接口(interface)编程
Java基础-面向接口(interface)编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的“类 ...
- Java面试题总结之Java基础(三)
1.JAVA 语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try 块中可以抛出异常吗? 答:Java 通过面向对象的方法进行异常处理, ...
- 夯实Java基础(十一)——内部类
1.内部类的概念 内部类顾名思义:将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.对于很多Java初学者来说,内部类学起来真的是一头雾水,根本理解不清楚是个什么东西,包括我自己(我太菜 ...
- 【Java基础】接口和抽象类之间的对比
Java 中的接口和抽象类之间的对比 一.接口 Interface,将其翻译成插座可能就更好理解了.我们通常利用接口来定义实现类的行为,当你将插座上连接笔记本的三角插头拔掉,换成微波炉插上去的时候,你 ...
- Java抽象类、接口、内部类
抽象类的概念: 1.Java中可以定义没有方法体的方法,还方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类: 2.如,shape类计算周长和面积的方法无法确定,那么就可以将这样 ...
- JAVA基础之接口
接口 学习完框架之后,整合SSM过程中对于接口的认识加深了许多.根据<java核心技术>这本书进一步研究了一下. 1.概念 java核心技术是这样说的:"在Java程序设计中,接 ...
- Java基础之接口与抽象类及多态、内部类
final关键字 被其修饰的类,不能被继承. 被其修饰的方法,不能被覆盖. 被其修饰的变量,是一个常量,不能被修改,所以定义时必须初始化(和C++的const类似). 一般有final,会搭配stat ...
随机推荐
- Windows 下如何调试 PowerShell
背景 最近在用 PowerShell 的时候,发现一些地方特别有意思.于是就萌生了看源代码的想法,单看肯定不过瘾,调试起来才有意思.于是就有了这个,记录下. 调试 PowerShell 主要分为两种方 ...
- Template -「平衡树」
Fhq-Treap. // Fhq-Treap const int MAXN = 1e5 + 5; struct Fhq_Treap { #define Lson Tr[p].l #define Rs ...
- Python花式读取大文件(10g/50g/1t)遇到的性能问题(面试向)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_97 最近无论是面试还是笔试,有一个高频问题始终阴魂不散,那就是给一个大文件,至少超过10g,在内存有限的情况下(低于2g),该以什 ...
- VSCode Easy Less扩展 out 配置字段
"less.compile": { "out": "..\\css\\" // 切记文件目录查找为 '\\' or '//' 此处我的设置会 ...
- GreatSQL MGR FAQ
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 目录 0. GreatSQL简介 1. GreatSQL的特色有哪些 2. Gr ...
- 机器学习建模高级用法!构建企业级AI建模流水线 ⛵
作者:韩信子@ShowMeAI 机器学习实战系列: http://www.showmeai.tech/tutorials/41 本文地址:http://www.showmeai.tech/articl ...
- 前端React项目遇到【Uncaught SyntaxError: Unexpected token '<'】错误的解决方式
问题描述 前端部署好项目后,打开相应的页面显示一片空白,打开console显示 问题排查思路 理解问题的本质 出现这个错误的原因是浏览器期望得到js文件,但页面却返回了html文件,如图中的js文件点 ...
- 数据库运维之路——关于tempdb暴增实战案例
转眼间,2021年的第一个季度已经到了最后一个月了,由于疫情原因,最近一段时间一直在北京,基本上没有出差,每天上班下班的日子感觉时间过的好快,新的一年继续努力奋斗啊. 仔细回想一下,自己踏入到sql ...
- java-运算符以及简单运用
运算符: 1)赋值运算符:= 2)算术运算符:+-*/%,++,-- 3)关系运算符:>,<,>=,<=,==,!= boolean 4)逻辑运算符:&&,|| ...
- C# 使用SIMD向量类型加速浮点数组求和运算(1):使用Vector4、Vector<T>
作者: 目录 一.缘由 二.使用向量类型 2.1 基本算法 2.2 使用大小固定的向量(如 Vector4) 2.2.1 介绍 2.2.2 用Vector4编写浮点数组求和函数 2.3 使用大小与硬件 ...