J2SE7规范_2013.2_类
8.1 类的定义
包括普通类和枚举类,枚举(略)
下面都是指普通类:
public只能用于外部类,成员类,不能用于局部类,匿名类
protected和private用于成员类时(待解)
static只能用于成员类,不能用于外部类,局部类,匿名类
abstract类可以有abstract方法
abstract类不能实例化
abstract类一定要保证子类能够实现其中的abstract方法
如果是为了不想被实例化,应该让构造成为private,通常含有static字段或方法
final类不能被继承,其中的方法无法被覆盖
final和abstract显然不能共存
strictfp类,表示其中的所有实型变量和表达式都是FP-strict
泛型类(略)
除了外部类和静态成员类,其他都叫内部类,包括成员内部类,局部内部类,匿名内部类
不能有static初始块,不能有成员接口
不能定义static成员,除非是final字段
但可以继承static成员
一个内部类的实例总是依赖于一个外部类实例
内部类外面定义的局部变量,形参,异常变量,必须定义为final
内部类外面定义的局部变量在内部类里面使用前必须初始化
静态成员类和静态局部类
可以有static初始块,可以定义static成员,可以有成员接口
成员接口总是static的 (内部接口的一种)
8.2 类的成员
构造方法,静态或非静态的初始化块,并非类的成员,所以不会被继承
8.3 类的字段
父类的private字段有可能被子类访问到,比如他们都在一个外部类里
但肯定不会继承给子类的
有可能从多个途径多次继承了同一个接口里定义的字段,没有关系,那只是常量,而且可以直接访问,或者用接口名访问
但两个父接口里的同名字段是不能被子类访问的,即使类型和值都相同也会编译报错
static字段就是类变量,非static就是实例变量
类变量初始化不能调用this和super,因为没有实例对象
未赋值的final static字段必须在static初始化块里初始化
未赋值的final 非static字段必须在构造方法结束前初始化
transient字段在持久化存储时不会被存储,比如序列化时
volatile字段在多线程中共享访问时总是读取最新值
volatile不能跟final共存
8.4 类的方法
abstract方法不能再声明为 private, static, final, native,strictfp, synchronized
native跟strictfp不能共存
abstract方法可以覆盖非abstract方法
无法用super调用abstract父类,因为父类无法实例化,但可以调用继承来的方法
final类的方法和声明为private的方法默认为final
native方法是说本方法不是平台无关的,里面有本地代码,直接加分号,没有方法体
除了abstract和native,方法必须有方法体{....}
声明了返回类型,不一定必须有return,可能通过异常等方式跳出方法
在覆盖或者实现方法的过程中无需考虑strictfp修饰符
8.8构造方法
构造不能是abstract, static, final, native, strictfp,synchronized
class Outer {
class Inner {}
}
class ChildOfInner extends Outer.Inner {
ChildOfInner() { (new Outer()).super(); }
}
J2SE7规范_2013.2_类的更多相关文章
- J2SE7规范_2013.2_类型_命名
3.1 字面量:包括整型,实型,字符,字符串,布尔,null 整形: 除非后面有个l或L,一般总是int类型 除非是0x,0,0b开头,一般总是十进制 无论什么进制,中间都可以有_,无意义,只是看 ...
- JDK Tools - wsimport: 编译 WSDL 生成 JAX-WS 规范的 Java 类
wsimport 命令是用来编译 wsdl 生成JAX-WS 规范的 Java 类的工具. 命令格式 wsimport [ options ] wsdl 命令参数 -s directory 指定源文件 ...
- Puppet主机、模块、类、资源、变量、参数、标签命名规范
Puppet命名规范: 约定说明: 小写字母:"a-z" 大写字母:"A-Z" 数字: "0-9" 句号: "." 下划 ...
- 【转载】PHP PSR-1 基本代码规范(中文版)
基本代码规范 本篇规范制定了代码基本元素的相关标准, 以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 "必须"("MUST")."一定不可 ...
- 项目编码规范(Ali)
一.研发流程规范 二.SQL编码规范 数据库命名规范:数据库名一律小写,必须以字母开头.库名包含多个单词的,以下划线“_”分隔.如果采用分库方案,分库编号从“0”开始,用“0”左补齐为四位. 表名规范 ...
- PHP编码规范PSR-1
.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...
- Batsing的网页编程规范(HTML/CSS/JS/PHP)
特别注意!!!我这里的前端编程规范不苟同于Bootstrap的前端规范. 因为我和它的目的不同,Bootstrap规范是极简主义,甚至有些没有考虑到兼容性的问题. 我的规范是自己从编程实践中总结出来的 ...
- psr的规范
基本代码规范 本篇规范制定了代码基本元素的相关标准, 以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 "必须"("MUST")."一定不可 ...
- Xcode6中如何使用自定义的类模板
说到IOS类的模板,有些人感觉很陌生,但是只要有开发过IOS程序的人,其实都用过类的模板,只不过是用的系统自带的类的模板. 例如创建一个ClassTemplateVC继承于UIViewControll ...
随机推荐
- Qt 自定义model实现文件系统的文件名排序(重定义sort函数即可。忽然开窍了:其实捕捉点击Header事件,内部重排序,全部刷新显示即可)
前段时间,需要做一个功能是要做文件系统的排序的功能.由于是自己写的model, 自己定义的数据结构.最初的想法只有一个自己去实现文件夹跟文件名的排序算法,不过感觉比较费时间.后来想到的是QFileSy ...
- OpenCV源码阅读(3)---matx.h---学习心得
在.h文件里定义类,可以通过内联函数的方法完成类基础函数的实现,这样就不需要额外写.cpp文件来写类的内容. 对于操作符重载,可以使用返回应用的方式减小内存开销 _Tp& someclass: ...
- Java API —— 反射
1.类加载器 1)类的加载 · 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. · 加载 :就是 ...
- spring cloud config 入门
简介 Spring cloud config 分为两部分 server client config-server 配置服务端,服务管理配置信息 config-client 客户端,客户端调用serve ...
- ConcurrentDictionary和Dictionary
http://stackoverflow.com/questions/6739193/is-the-concurrentdictionary-thread-safe-to-the-point-that ...
- C++ STL之set的基本操作
set是集合,虽然也存在键值和实值,不过两者根本就是同一个值,键值的设置完全就是为了满足红黑树的底层结构,set操作与map很像不过也有些不同. 1. set迭代器与map的不同: (1)set使用接 ...
- asp.net中Session过期设置方法
在Asp.net应用中,很多人会遇到Session过期设置有冲突.其中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会 ...
- BZOJ_1624_ [Usaco2008_Open]_Clear_And_Present_Danger_寻宝之路_(最短路_Floyd)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1025 给出\(n\)个点以及之间的边的长度,给出必须访问的点的顺序,求最短路线长度. 分析 用 ...
- POJ 2388 Who's in the Middle (快速选择算法:O(N)求数列第K大)
[题意]求数列中间项. ---这里可以扩展到数列第K项. 第一次做的时候直接排序水过了= =--这一次回头来学O(N)的快速选择算法. 快速选择算法基于快速排序的过程,每个阶段我们选择一个数为基准,并 ...
- 【大数阶乘】NYOJ-28
大数阶乘 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数 ...