`
葬雪晴
  • 浏览: 5925 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

实现和Override的方法返回值的一点点小发现

 
阅读更多
定义一个接口
public interface Processor {
String name();

Object process(Object input);
}


实现一个类

class FilterAdapter implements Processor{

Filter filter;

public FilterAdapter(Filter filter){
this.filter = filter;
}

public String name() {
return filter.name();
}

public Waveform process(Object input) {
return filter.process((Waveform)input);
}

}


在接口的process方法的返回值是Object,而在实现类里的process方法的返回值是Waveform。由于是实现所以不能加Override去检测

对于继承

public class Ex1 {
	public Object name(){
		return "";
	}
}


public class Ex2 extends Ex1{
	@Override
	public String name(){
		return "";
	}
}



当把Ex1方法的返回值改成Double的时候报错。

总结如下
1、接口的实现和类的继承的Override的时候。要求方法签名相同
2、要求返回值子类或实现的返回值小于或等于父类或接口返回值的域。

第二条很拗口。。还是看例子吧。嘿嘿
分享到:
评论
1 楼 gongmf85 2011-10-06  

good!

相关推荐

    静态(static)方法重写(override)

    ### 静态(static)方法与重写(override) #### 一、概念解析 在面向对象编程语言中,如Java,方法重写(override)是一种重要的特性...理解静态方法与重写之间的区别,有助于更好地设计和实现面向对象的程序结构。

    有返回值的线程

    除了`Callable`和`Future`,还可以使用`Runnable`配合`ExecutorService`和`Future`来实现有返回值的线程。首先创建一个实现了`Runnable`的类,然后在内部创建一个`Future`对象,通过`ExecutorService`提交任务并获取...

    override abstract virtual interface比较

    Override 关键字用于重写父类中的虚拟方法,Abstract 关键字用于声明抽象类和抽象方法,Virtual 关键字用于声明虚拟方法,而 Interface 关键字用于声明接口。只有正确地使用这些关键字,才能编写出高质量的 C# 程序...

    Delphi面向对象:overload与override[文].pdf

    本文将详细介绍overload和override的概念、应用场景及实现方法。 一、overload overload是指在同一个类中定义多个同名函数,但这些函数的参数列表不同。编译器会根据函数的参数列表来确定调用哪个函数。overload的...

    分享一下@Override标签背后的小秘密

    @Override标签用于标记方法的重写,它可以帮助我们检查是否正确地重写了父类中的方法,并且告诉读代码的人,这是一个重写的方法。例如,我们可以有一个基类Fruit,里面有一个方法show_name(int num),然后我们可以...

    new和override区别的小例子

    当你在一个派生类中使用`new`关键字重写基类的方法或属性时,并没有真正地覆盖基类的实现,而是创建了一个新的同名成员,它在派生类中可见,但在基类中定义的原有成员仍然存在,只是在派生类中被"遮蔽"了。...

    Lua 类的继承与override

    本文将深入探讨 Lua 中如何实现类的继承以及方法的重写(override)。 首先,我们来理解 Lua 中的“类”。在 Lua 中,类通常被表示为一个表(table),这个表包含了类的一些属性和方法。创建一个类,我们可以定义一...

    案例八(启动带有返回值的activity

    这个过程通常通过Intent、startActivityForResult()方法和onActivityResult()回调来实现。 首先,我们需要创建一个Intent对象,它是一个用来在组件之间传递数据的类。在启动带有返回值的Activity时,我们会在Intent...

    Override错误已解决

    - `@Override` 注解用于标记一个子类中的方法,以表明该方法是覆盖了父类中的同名方法。如果该方法实际上并未覆盖父类中的任何方法,则不应该使用此注解。 #### 三、解决方案 1. **更新 JDK 版本**: - 确保安装...

    Override-Overload

    ### Override与Overload的区别 在面向对象编程中,方法重写(Override)和方法重载(Overload)是两个非常重要的概念。它们虽然都涉及到方法名称的...理解这两个概念的区别对于正确地设计和实现面向对象程序至关重要。

    new,override,virtual 示例

    在C#编程语言中,`new`、`override`和`virtual`是三个非常重要的关键字,它们用于控制类成员(主要是方法)的行为,涉及到多态性这一核心概念。接下来我们将详细探讨这三个关键字以及它们在实际编程中的应用。 1. `...

    Lua 类的继承与函数override

    在 Lua 语言中,虽然它本身并没有内置的类(class)机制,但为了实现面向对象编程,程序员通常会采用一种称为“模拟”的方式来构建类和对象。这种模拟方法是基于表(table)和元表(metatable)的概念,以及一些特殊...

    了解何时使用 Override 和 New 关键字(C# 编程指南)

    - **Override**: 当一个派生类需要修改或扩展从基类继承的方法的行为时,可以使用 `override` 关键字。这要求基类的方法必须是 `virtual` 或 `abstract` 的。 - **New**: 当一个派生类希望保留基类的行为同时添加...

    详解利用SpringMVC拦截器控制Controller返回值

    在这个场景中,我们利用拦截器来控制Controller方法的返回值,特别是当方法未实现或者需要在开发阶段返回模拟数据时。下面将详细介绍如何实现这一功能。 首先,我们需要定义两个注解:`Debug` 和 `StringResult`。 ...

    c# override new base 关系

    在C#编程语言中,`override`、`new` 和 `base` 是三个关键字,它们在处理类继承和方法重写时起着至关重要的作用。理解这三个关键字的关系和用法对于编写可扩展和灵活的代码至关重要。 首先,我们来看 `override` ...

    override和重载 希望对大家有帮助

    了解并熟练掌握`override`和`重载`,能帮助开发者更好地设计和实现面向对象的程序,提高代码的可读性和可维护性。在实际编程中,这两个概念经常结合使用,共同构建出强大的多态系统。希望这次的讲解对您理解这两个...

    android @override 报错解决方案

    现象: … java: 1801: method does not override a method from its superclass @Override… 原因: Eclipse is defaulting to Java 1.5 and you have classes implementing interface methods (which in Java 1.6 ...

    Android Intent带返回值跳转Demo

    在Android应用开发中,Intent是连接各个组件(如Activity、Service等)的桥梁,它用于启动其他组件并...在Intent中处理返回值是Android开发中不可或缺的一部分,理解并运用好这部分知识,将使你的应用更加健壮和灵活。

    new、abstract、virtual、override,sealed关键字区别和使用代码示例

    C# 中的 new、abstract、virtual、override、sealed 关键字的区别和使用代码示例 摘要:本资源旨在对 C# 中的 new、abstract、virtual、override、sealed 关键字进行详细的解释和比较,并提供实践代码示例,以帮助...

    overload and override

    ### Overload和Override详解 ...综上所述,`Overload`和`Override`都是面向对象编程的重要特性,分别用于解决类内方法的多态性和类间方法的多态性问题。理解这两个概念的区别有助于更好地设计和编写高质量的Java程序。

Global site tag (gtag.js) - Google Analytics