java override

Android的开发者对@Override肯定是非常熟悉,不管是自己的代码中还是书上都会出现,但是他是什么意思呢?如下:
  @Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:
1、可以当注释用,方便阅读
2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错比如你如果没写@Override而你下面的方法名又写错了,这时你的编译器是可以通过的(它以为这个方法是你的子类中自己增加的方法)
  

Java代码

  1. public class Sales extends Employee{
  2. //子类除了具有父类的一些属性,也可以有自己的一些属性
  3. private String msn;
  4. public Sales(String mobile,String msn) {
  5. super(mobile);
  6. this.msn = msn;
  7. }
  8. @Override
  9. public String showMess() {
  10. return super.showMess()+"==msn:"+this.msn;
  11. }
  12. }
public class Sales extends Employee{

        //子类除了具有父类的一些属性,也可以有自己的一些属性
	private String msn;

	public Sales(String mobile,String msn) {
		super(mobile);
		this.msn = msn;
	}

	@Override
	public String showMess() {
		return super.showMess()+"==msn:"+this.msn;
	}
}

注意这时被覆盖的showMess方法的访问级别是public,可以被任何其他对象访问到。

Java代码

  1. public class Parent {
  2. private int num(int i,int j){
  3. return i+j;
  4. }
  5. public static void main(String[] args) {
  6. Parent p = new Child();
  7. System.out.println(p.num(1, 2));
  8. }
  9. }
  10. class Child extends Parent{
  11. public int num(int x,int y){
  12. return x-y;
  13. }
  14. }
public class Parent {

	private int num(int i,int j){
		return i+j;
	}

	public static void main(String[] args) {
		Parent p = new Child();
		System.out.println(p.num(1, 2));
	}
}
class Child extends Parent{

	public int num(int x,int y){
		return x-y;
	}
}

这段代码的执行结果为什么呢?如果你回答-1则错了,正确答案是3。
为什么呢?因为父类的num方法是private的,所以不能被覆盖,所以子类的num方法不是一种Override,因此在子类找不到被覆盖的num方法就会执行父类的num方法。所以结果输出为3.

时间: 10-31

java override的相关文章

java @override 报错处理

转载自:http://blog.sina.com.cn/s/blog_9c7605530101kl9r.html 一.java @override 报错处理 做项目的时候,同事那边电脑上编译通过的java代码,或者是网上下载的样例代码,导入工程后却是编译不通过,总是@override报错,把@override去掉就好了,有时候@Override出现的地方很多,要全部删除@Override很繁琐很吐血,不能从根本上解决问题.网上找了一下原因,才知道: 据说这是jdk的问题,@Override是JD

Java @override报错的解决方法

有时候Java的MyEclipse工程换一台电脑后编译总是@override报错,把@override去掉就好了,但不能从根本上解决问题,因为有时候有@override的地方超级多. [size=18.0180187225342px]       这是jdk本身的问题,@Override是JDK5就已经有了,但是不支持对接口的实现,也就是说使用@Override的时候其父类必须是一个类,而不能是接口,否则会报错.JDK6修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Over

Java Override/Overload

重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说子类能够根据需要实现父类的方法. 在面向对象原则里,重写意味着可以重写任何现有方法.实例如下: class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Animal{ public

[Java] Override和Overload的使用规则和区别

重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写! 返回值和形参都不能改变.即外壳不变,重写内在实现! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说子类能够根据需要实现父类的方法. 在面向对象原则里,重写意味着可以重写任何现有方法.实例如下: class Animal{ public void move(){ System.out.println("Animal can move"); } } class Pig extends An

Java @Override报错

问题 如果在使用Eclipse开发Java项目时,在使用 @Override 出现以下错误:The method *** of type *** must override a superclass method 原因一般是因为所用Compiler是jdk5,(5不支持@Override等形式的批注) 解决 网上几乎都是说将window->preferences->java-compiler中的Compiler compliance level修改为1.6或以上,但我已经设了仍不行, 最后通过

JAVA Override和Overload的含义去区别

java中的继承,方法覆盖(重写)override与方法的重载overload的区别 1.方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现,重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding) .子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被屏蔽了. 2.如果在一个

从0开始学Java——@override的作用

早上跟着<jsp&Servlet学习笔记>来学习jsp,在使用eclipse创建了一个servlet类之后,发现自动创建的类和书上相比,doGet方法的前面少了@override,那么我想eclipse自动创建的东西,语法上应该不会有问题吧,如果语法上没有问题,那么为什么作者又要加上@override呢,他究竟有什么作用,带着这样的疑问 @override有注释文档的作用,可有可无有点像鸡肋 但它对于编程粗心的人可是个很人性化的功能 如果想重写父类的方法,比如toString()方法的

java @Override错误的解决办法

Myeclipse中出现@Override错误,必须删除此标志,项目才可以编译通过, 但是本来这个方法就是要重写的,为什么会报错呢   jdk1.5(5.0)之前这个就有,算是Bug,jdk1.6(6.0)版本之后修复了这个Bug.   把工程编译时使用JDK1.6版本可以解决. 具体操作: Myeclipse中 Window-->Preferences-->Java-->Compiler-->Configure Project Specific Settings -->选中

[转载] Thrift原理简析(JAVA)

转载自http://shift-alt-ctrl.iteye.com/blog/1987416 Apache Thrift是一个跨语言的服务框架,本质上为RPC,同时具有序列化.发序列化机制:当我们开发的service需要开放出去的时候,就会遇到跨语言调用的问题,JAVA语言开发了一个UserService用来提供获取用户信息的服务,如果服务消费端有PHP/Python/C++等,我们不可能为所有的语言都适配出相应的调用方式,有时候我们会很无奈的使用Http来作为访问协议;但是如果服务消费端不能