java基础讲解10-----类的高级特性
一.final关键字
1.final关键字修饰变量,表示变量不可以被改变,如果想修改,编译器不会接受的。 注意:final关键字定义的变量必须赋值
public static final 修饰 白送和i全局常量 定义时,必须赋值、(常用)
2.final修饰方法 这个方法不能被重写
可以防止子类修改该类的定义与实现方式
3.final修饰类 这个类不能被继承
一个类不让任何类继承,并且不让其他人对这个类进行任何改动
二:内部类
1.什么事内部类
就是再类中,再定义一个类,内部类分为,成员内部类,局部内部类,匿名内部类
2.什么是成员内部类
在一个类中使用内部类,可以再内部类中 直接存取 所在类的所有私有成员,就是说,内部类,可以随意使用外部类的成员方法,成员变量
内部类对象与外部类对象关系紧密,内外可以交互使用,彼此类中定义的变量
可以使用this关键字获取内部类与外部类
注意; 再内存中,所有的对象是放在堆中的,方法和方法中的形参,或者局部变量 是放在栈中的
3.什么是局部内部类
内部类不仅仅可以放在类中定义,还可以再类的局部位置定义,如 在类中的方法或者任意的作用域中 都可以定义为内部类
4.什么是匿名内部类
在一个方法中,将return语句和内部类定义语句合并在一起
return new B()
{
//内部类实体
}
例子 :
interface BB(){};
public class AA()
{
public BB doit()
{
return new BB()
{
private num=0;
public int getValue(){return num}; //再java编译的时候,doit方法内部 会先返回一个BB的引用,然后return语句中插入一个定义内部类的代码,这个类是没有名称的
//作用: 这种内部类的作用就是创建一个实现与BB接口的匿名类的对象
}
}
}
注:匿名内部类编译以后,会产生 “外部类名$序号”为名称的 .class文件,序号一 1 到 n 排序,分别表示1到n个 匿名内部类
5。什么是静态的内部类
就是在内部类的前面加一个static ,一个静态内部类中可以声明static成员,但是非静态内部类中不可以声明静态成员。用的比较少
java基础讲解10-----类的高级特性的更多相关文章
- Java基础教程(10)--类
一.声明类 你已经见过了以如下方式定义的类: class MyClass { // field, constructor, and method declarations } 上面是声明类的最 ...
- Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字
Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字 一丶Java中包的机制 首先包其实就是个文件夹.作用就是管理类. Java中每次定义一个类的时候.通过Java编译之后.都会生 ...
- Java第五次作业--面向对象高级特性(抽象类与接口)
Java第五次作业--面向对象高级特性(抽象类与接口) (一)学习总结 1.在上周完成的思维导图基础上,补充本周的学习内容,对Java面向对象编程的知识点做一个全面的总结. 2.汽车租赁公司,出租汽车 ...
- Java基础-DButils工具类(QueryRunner)详解
Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...
- Java第四次作业——面向对象高级特性(继承和多态)
Java第四次作业--面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能, ...
- Java基础之File类的使用
Java基础之File类的使用 1.File类的构造方法和常用方法 2.对File中listFile(FileNameFilter name)学习 3.与File文件类相关的实现 File类的构造方法 ...
- JAVA基础(10)——IO、NIO
转载:http://blog.csdn.net/weitry/article/details/52964948 JAVA基础系列规划: JAVA基础(1)——基本概念 JAVA基础(2)——数据类型 ...
- Java第四次作业—面向对象高级特性(继承和多态)
Java第四次作业-面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能,说 ...
- 多测师讲解常用的测试工具分为10类_高级讲师肖sir
我们将常用的测试工具分为10类. 1. 测试管理工具 2. 接口测试工具 3. 性能测试工具 4. C/S自动化工具 5.白盒测试工具 6.代码扫描工具 7.持续集成工具 8.网络测试工具 9.app ...
- 夯实Java基础系列10:深入理解Java中的异常体系
目录 为什么要使用异常 异常基本定义 异常体系 初识异常 异常和错误 异常的处理方式 "不负责任"的throws 纠结的finally throw : JRE也使用的关键字 异常调 ...
随机推荐
- BZOJ 1828 [Usaco2010 Mar]balloc 农场分配(贪心+线段树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1828 [题目大意] 现在有一些线段[l,r]的需求需要满足,i位置最多允许a[i]条线 ...
- BZOJ 4236 JOIOJI(前缀和)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4236 [题目大意] 给出一个只包含三种字母的字符串,求出三种字母数量相等的最长子串 [ ...
- [bzoj1011](HNOI2008)遥远的行星(近似运算)
Description 直 线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小的常量, ...
- Git 对比 SVN
转自:http://www.aqee.net/5-fundamental-differences-between-git-svn/ 我是一开始就用Mercurial, Git这类的系统.(现在已经百分 ...
- OpenCV支持向量机SVM对线性不可分数据的处理
支持向量机对线性不可分数据的处理 目标 本文档尝试解答如下问题: 在训练数据线性不可分时,如何定义此情形下支持向量机的最优化问题. 如何设置 CvSVMParams 中的参数来解决此类问题. 动机 为 ...
- pytho文件命名不要内部模块或者引用模块名字相同
自己写的包和模块,注意命名不要和python内置模块和包.以及引用的模块和包名字冲突
- SQL注入深入剖析
SQL注入是一门很深的学问,也是一门很有技巧性的学问 1. 运算符的优先级介绍 2. SQL语句执行函数介绍 mysql_query() 仅对 SELECT,SHOW,EXPLAIN 或 DESC ...
- SQL盲注测试高级技巧
写在前面: 这篇文章主要写了一些加快盲注速度的技巧和盲注中比较精巧的语句,虽然注入并不是什么新技术了.但是数据库注入漏洞依然困扰着每一个安全厂商,也鞭策着每一个安全从业者不断前进. 正文: 首先来简单 ...
- Java笔记12:Java对象排序
代码: import java.util.Arrays; import java.util.Comparator; class Person { private String name; privat ...
- Spark SQL 代码简要阅读(基于Spark 1.1.0)
Spark SQL允许相关的查询如SQL,HiveQL或Scala运行在spark上.其核心组件是一个新的RDD:SchemaRDD,SchemaRDDs由行对象组成,并包含一个描述此行对象的每一列的 ...