java中的final與C++中的const的區別
阿新 • • 發佈:2019-02-02
(1)final在java中定義常量,可作用於基本型別或者類型別,若是作用於類型別,則此類型別不能作為父
類被繼承,也就是說它的下面不能有子類,這樣的類叫做原子類。
C++中的const定義常量,
(2)Java中的final如果是對於基本型別,那和C++ const是一樣的
但是如果是對物件而言,不同了
(3)final表示這個控制代碼是不可改變的
final Object obj=(Object)new String("a");
obj=(Object)new String("hello");是非法的
但是依然可以呼叫obj的方法。如((String)obj).length()是合法的
而C++如果一個物件被定義成const,就不能呼叫物件的方法。除非這個方法被定義成const.
package test;
/*final表示這個控制代碼是不可改變的
final Object obj=(Object)new String("a");
obj=(Object)new String("hello");是非法的
但是依然可以呼叫obj的方法。如((String)obj).length()是合法的 */publicclass Test {
publicstaticvoid main(String[] args) {
final Object obj=(Object)new String("a");
//obj=(Object)new String("hello"); //不能對終態區域性變數obj賦值 System.out.println(((String)obj).length());//但是依然可以呼叫obj的方法
}
}
類被繼承,也就是說它的下面不能有子類,這樣的類叫做原子類。
C++中的const定義常量,
(2)Java中的final如果是對於基本型別,那和C++ const是一樣的
但是如果是對物件而言,不同了
(3)final表示這個控制代碼是不可改變的
final Object obj=(Object)new String("a");
obj=(Object)new String("hello");是非法的
但是依然可以呼叫obj的方法。如((String)obj).length()是合法的
而C++如果一個物件被定義成const,就不能呼叫物件的方法。除非這個方法被定義成const.
package
/*final表示這個控制代碼是不可改變的
final Object obj=(Object)new String("a");
obj=(Object)new String("hello");是非法的
但是依然可以呼叫obj的方法。如((String)obj).length()是合法的 */publicclass Test {
publicstaticvoid main(String[] args) {
final Object obj=(Object)new String("a");
//obj=(Object)new String("hello");
}
}