objective c-OC中有方法重载吗?具体是怎么样?

问题描述

OC中有方法重载吗?具体是怎么样?

oc中有方法重载吗?那位大神具体描述下?看了好多都没有描述清楚!还是不知道到底有没有重载

解决方案

Objective-C不支持方法重载。

下列两个方法:

  • (void)doSth:(NSInteger)integer;
  • (void)doSth:(NSString *)str;
    对Objective-C而言是一样的,都叫方法doSth:
    同时定义实现这两个方法是无法编译通过的。
    若要达到类似重载的效果,可以这样跟不同参数:
  • (void)doSth withInt:(NSInteger)integer;
  • (void)doSth withStr:(NSString *)str

顺便提一下,我也在网上搜索过,含有关键字重载的,其实是子类继承父类后把父类的方法重写了。
重载overload,是同一类中方法名相同参数签名不同的方法,重写override的是以相同的函数签名覆盖父类相同的方法。

解决方案二:

Objective-C的函数标签与C++不一样的,冒号前面的才是标签

解决方案三:

在oc 中这样写是报错的 原因在于 都是doSth 你在调用的时候 不知道要传什么属性的值 模拟器根本不认识 也无法区分你想要传的参数类型 这里和c++不同

解决方案四:

没有没有没有没有没有没有没有

解决方案五:

没有重载voerLoad,有重写。overWrite

解决方案六:

ios没有重载 swift 有。

时间: 2024-12-21 01:54:29

objective c-OC中有方法重载吗?具体是怎么样?的相关文章

Java语言入门教程(十四):Java语言中方法重载与方法覆盖

很多时候,某个Java类中有多个类似的方法.如Math类中,计算绝对值的方 法就会有多个,因为对不同数据类型的数计算方式不同.比如对float,int, long,double各类型的计算方式各不相同,那么Math类中就应该设计4个求绝对 值的方法,分别对每种类型进行计算.在这种情况下,最好的方式就是设计4个 同名,但是不同参的方法,如下所示(请参见API帮助文档): abs(double a) Returns the absolute value of a double value. abs(

PHP使用方法重载实现动态创建属性的get和set方法_javascript技巧

在PHP中,我们不能够直接通过方法名相同,签名不同的方法来实现方法重载,因为PHP是弱数据类型,不能很好的区分签名.但是,可以在PHP的类中运用__call()方法来实现方法重载.当调用一个类中并不存在的方法时,会自动调用__call()方法,其形式为__call($name,$arguments) 其中$name是方法的名称,$arguments是一个数组类型的参数. 下面的例子是使用PHP的方法重载来动态创建get和set方法.(在面向对象编程中,一个类中的属性会使用get和set来赋值,但

方法重载必须在同一个类中吗?

问题描述 classA{publicvoidtt(){}}classB{publicinttt(intnum){}}这样重载从A中继承的方法算不算是在同一个类中呢?? 解决方案 解决方案二:是的,方法的重载必须是要在同一个类中,而且方法名相同,参数列表不同,如果写成classBextendsA{publicvoidtt(){}}这样是方法的重构了,楼主那样写不是重载也不是重构.解决方案三:方法的重载包括:一.方法名称相同,参数类型不同:二.方法名称相同,参数个数不同,如果在一个两个没有关系的类中

JAVA学习(七):方法重载与方法重写、this关键字和super关键字

方法重载与方法重写.this关键字和super关键字 1.方法重载 重载能够使具有相同名称但不同数目和类型参数的类传递给方法. 注: 一是重载方法的参数列表必须与被重载的方法不同,并且这种不同必须足以清楚地确定要调用哪一个方法: 二是重载方法的返回值类型可以与被重载的方法相同,也可以不同,但是只有返回值类型不同不能表示为重载. 例如,最常用的println()方法在JDK的java.io.PrintStream中定义了十几种形式的重载,常用格式如下: public void println(in

Java编程那些事儿55—方法重载和参数传递

7.5 方法相同 在Java语言中,方法相同的概念和其它程序设计语言不尽相同,Java语言中的方法相同指方法名称和参数列表都相同,其中参数列表相同指参数个数.参数类型和参数排列顺序等相同,参数名称可以不相同.相同的方法访问控制符.返回值类型可以不相同. 以下是一下相同的方法: public void test(int a,double[] d) private int test(int i,double[] d1) 在同一个类内部,不能声明相同的方法,否则将出现语法错误. 7.6 方法重载 方法

C#中方法重载详解

首先我们说一下什么是方法重载.在面对对象这样的高级语言中都允许我们在一个类中定 义多个方法名相同.方法间参数个数和参数顺序不同的方法,对于参数个数不同或者参数列 表不同的情况我们称之为参数列表不同.需要注意的是这里没有提到方法的返回值.也就是 决定方法是否构成重载有两个条件: (1)在同一个类中: (2)方法名相同: (3)参数列表不同. 例如下面的代码: public void Show()// (1) { Console.WriteLine("Nothing"); } public

Remoting方法重载遇到的一个问题

在通过Remoting调用重载的泛型方法时,遇到了一个奇怪的问题,现使用一个例子一步步来说明如下. 一.没有重载的情况 假设Remoting的接口是IComputer: public interface IComputer { int Add<TEntity>(TEntity c); } 在Remoting Server上的实现非常简单: public class Computer : IComputer { public int Add<TEntity>(TEntity c) {

js中方法重载如何实现?以及函数的参数问题

js中没有办法直接实现方法重载,但每一个函数都有一个特殊的参数arguments,利用它可以实现方法的重载,具体示例如下   都知道在js中没有办法直接实现方法重载,因为在js中如果定义了多个名称相同,但参数个数不一样的方法,其实只有最后一个方法能被真正调用,其他的方法都被覆盖掉了. 但每一个函数都有一个特殊的参数arguments,利用它可以实现方法的重载. 例如: 复制代码 代码如下: function Add(firstnumber,sencondnumber) { return firs

JavaScript中的方法重载实例

 这篇文章主要介绍了JavaScript中的方法重载实例,本文直接给出重载实例,需要的朋友可以参考下     .NET里面的方法重载用着的确很方便,哪Javascript里面能不能也哪样做呢? Javasciprt里面本生是没有方法重载的功能,以前很多人的做法可能是直接少传参数过去,然后在根据参数是否为 "undefined" 未定义来决定怎么处理,从而实现类似方法重载的功能. 例如:   代码如下: var showMessage = function(name,value,id){