java V/S C++从java中返回一个方法
我知道在方法定义中指定的'final'关键字声明这些方法不能被重写。但是如果我想要一个方法返回一个最终的对象呢?如何在Java中指定这一点
class A{
final int x;
A(){
x = 5;
}
final int getx(){
return x;
}
}
class B extends A{
final int x;
B(){
x = 5;
}
final int getx(){
return x;
}
}
class he{
public static void main(String args[]){
A a = new A();
final int x = a.getx();
System.out.println(x);
}
}
上面的代码给出了一个编译错误。我知道我重写final方法的原因。但我的意图是从getx()返回最终对象(即返回x作为最终整数)
这是我的C++等效代码。它很好用
#include <bits/stdc++.h>
class A{
public:
const int x;
A():x(5){
}
const int getx(){
return x;
}
};
class B:public A{
public:
const int x;
B():x(5){
}
const int getx(){
return x;
}
};
int main(){
A *a = new A();
const int x = a->getx();
std::cout<<x<<std::endl;
return 0;
}
<>这是因为C++有两个不同的关键字:“const”和“最终”。在C++中,“最终”关键字在函数原型的末尾指定,类似这样的:
virtual int getx() final {}
因此,这两个关键字区分了“什么是方法的返回类型”和“哪些方法不能被重写”
我的问题是:在Java中有没有同样的方法
# 1 楼答案
在Java中,数据类型的
final
表示现在,如果我从Java中的函数返回一个值,它要么是一个本机类型,我们通过值返回,要么是一个用户定义的类型,我们通过引用返回。在这两种情况下,返回值上的最终限定符都是多余的
final
是在C++11中添加的,这意味着这个成员函数不能被继承类重写(与Java相同)外挂是java没有C++相同的正确性,如果你不混合这些概念,你的生活会更容易。