1.java中的final与C++中的const的区别
(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.
(4)java中没有const,不能直接定义常量,是通过static final组合来实现的。
2.重载( Overload )和重写( Override )的区别。重载的方法能否根据返回类型进行区分?
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。
里氏代换原则:任何基类可以出现的地方,子类一定可以出现。
为什么不能根据返回值重载?
参照:https://blog.csdn.net/simba_cheng/article/details/80835646
原文地址:https://www.cnblogs.com/chrisweiii/p/10366937.html