访问权限:
对象可以调公开的方法和属性(不过按照封装原则,一般对象不会直接调用属性),公开的是用public修饰的,或者子类调用父类protected修饰的变量或方法。如果不用修饰符则表示是同一个包下面可以调用的友好类型。而private修饰的属性和方法无法通过对象直接调用,但可以使用反射进行调用。
- 在编写类的时候,类方法总是可以操作该类中的类变量。与访问限制符没有关系。
- 不能用private和protected 修饰类
- 访问限制修饰符按访问权限从高到低的排列顺序:public 、protected、友好的、private。
protected:
protected的可见性在于两点:
- 基类的 protected 成员是包内可见的,并且对子类可见;
- 若子类与基类不在同一包中,那么在子类中,子类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。
final
final 关键字可以应用于类,以指示不能扩展该类(不能有子类)。
final 关键字可以应用于方法,以指示不能重写任何子类中的方法。
一个类不能同时是 abstract 又是 final。abstract 意味着必须扩展类,final 意味着不能扩展类。
一个方法不能同时是 abstract 又是 final。abstract 意味着必须重写方法,final 意味着不能重写方法。
volatile
见 Java - volatile
transient
只要类实现了 Serilizable 接口,这个类的所有属性和方法都可自动进行序列化,但要一些属性(比如支付账号、密码等)不希望在网络上传播(涉及序列化)或本地序列化缓存时,使用此关键字
换句话说,这个字段的生命周期仅存于调用者的内存中而不会写到磁盘里持久化。
测试用例:
将对象写入文件再读取,transient 修饰的属性值为空
try {
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("C:/user.txt"));
os.writeObject(user); // 将 User对象写进文件
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
ObjectInputStream is = new ObjectInputStream(new FileInputStream("C:/user.txt"));
user = (User) is.readObject(); // 从流中读取User的数据
is.close();
System.out.println("\nread after Serializable: ");
System.out.println("username: " + user.getUsername());
System.err.println("password: " + user.getPasswd());
} catch (Exception e) {
e.printStackTrace();
}
特殊:对 static 无效
原因:序列化的是堆中的对象,静态变量是跟随类存储在方法区,因此静态变量不会被序列化
Java transient关键字使用小记:https://www.cnblogs.com/lanxuezaipiao/p/3369962.html
throwable
构造方法摘要
Throwable():构造一个将 null 作为其详细消息的新 throwable。
Throwable(String message):构造带指定详细消息的新 throwable。
Throwable(String message, Throwable cause):构造一个带指定详细消息和 cause 的新 throwable。
Throwable(Throwable cause):构造一个带指定 cause 和 (cause==null? null : cause.toString())(它通常包含类和 cause 的详细消息)的详细消息的新 throwable。
方法摘要
Throwable fillInStackTrace():记录异常堆栈跟踪。
Throwable getCause():返回此 throwable 的 cause;或者如果 cause 不存在或未知,则返回 null。
String getLocalizedMessage():创建此 throwable 的本地化描述。
String getMessage():返回此 throwable 的详细消息字符串。
StackTraceElement[] getStackTrace():提供编程访问由 printStackTrace() 输出的堆栈跟踪信息。
Throwable initCause(Throwable cause):将此 throwable 的 cause 初始化为指定值。
void printStackTrace():将此 throwable 及其追踪输出至标准错误流。
void printStackTrace(java.io.PrintStream s):将此 throwable 及其追踪输出到指定的输出流。
void printStackTrace(java.io.PrintWriter s):将此 throwable 及其追踪输出到指定的 PrintWriter。
void setStackTrace(StackTraceElement[] stackTrace):设置将由 getStackTrace() 返回,并由 printStackTrace() 和相关方法输出的堆栈跟踪元素。
String toString():返回此 throwable 的简短描述。
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
原文链接:https://blog.youkuaiyun.com/lzabcde/article/details/50515551