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(); }
}

  

 

最新文章

  1. js有关时间日期的操作
  2. MVC 添加 httpHandlers 支持 .aspx 页面访问
  3. spring源码深度解析-2功能扩展
  4. JSP ajax跨域问题 怎么处理 原因:CORS 头缺少 'Access-Control-Allow-Origin')。 ajax http 415
  5. [置顶] 白话最小边覆盖总结--附加 hdu1151结题报告
  6. 让ie支持placeholder属性,一段js搞定
  7. 【原创】poj ----- 1182 食物链 解题报告
  8. Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSInvocation setArgument:atIndex:]: index (3) out of bounds [-1, 2]'
  9. ECSHOP购物车页面显示商品简单描述
  10. Golang开发环境搭建(Notepad++、LiteIDE两种方式以及martini框架使用)
  11. Red and Black(dfs水)
  12. [PHP] debug_backtrace()可以获取到代码的调用路径追踪
  13. Executors的四种线程池
  14. Promise实现ajax
  15. 如何将自己写的verilog模块封装成IP核
  16. maven(八),阿里云国内镜像,提高jar包下载速度
  17. oracle 中删除表 drop delete truncate
  18. 【CTF WEB】反序列化
  19. [LeetCode] 844. Backspace String Compare_Easy tag: Stack **Two pointers
  20. Go语言中cannot convert adminname (type interface {}) to type *: need type assertion的解决办法

热门文章

  1. php动态滚动加载实例
  2. 项目用到异步加载头像LasyList
  3. Java API —— System类
  4. uva1639 Candy
  5. UVa 11542 (高斯消元 异或方程组) Square
  6. 实现窗口逐渐增大(moveTo(),resizeTo(),resizeBy()方法)
  7. JSOI2008最大数(线段树)
  8. Java [Leetcode 202]Happy Number
  9. Android 实现emoji表情的demo
  10. 【转】iOS自动布局进阶用法