不喜勿喷------java
定义静态方法c++
1.c++:安全
头文件 static FileUtils* getInstance();函数
cpp文件 FileUtils* FileUtils::getInstance() { return s_sharedFileUtils; }lua
2.javaspa
java文件 public static FileUtils getInstance() {return s_sharedFileUtils;}code
3.luaorm
lua 沒有静态方法这一说法。函数也是一个值。对象
tb.print和tb:print的含义略微不一样,:调用函数会多传递进去一个self进去,差很少至关于OOP里面的成员函数调用.可是和OOP里面成员函数/非成员函数不一样的是,lua里面的非成员函数.调用,他不是静态的.tb对象有一个print function成员,当tb是nil的时候,你不能调用print成员的...在OOP里面,没有这么一回事,非成员函数是全局的.继承
定义表 tb = {} 定义函数 function tb.print() print("") end
4.object-c
头文件 + (FileUtils*) getInstance;
.m文件 + (FileUtils*) getInstance { return instance; }
2.宏定义
1.c++:
头文件 #define CC_PLATFORM_IOS 1
2.java
java没有这个说法,能够用final static int代替,但要在某个class或者interface里面;
public interface Constants { public final static int CC_PLATFORM_IOS = 1; }
3.lua
lua 没有这个说法,用全局变量代替 CC_PLATFORM_IOS 1
4.object-c
头文件 #define CC_PLATFORM_IOS 1
3. 全局方法
1.c++:(与c相似)
头文件 void f1();
cpp文件 void f1() { cout << "f1" << endl; }
当使用的地方也有f1方法时,编译会报重定义错误;
2.java
java没有这个说法,都必须放到class中,便是类静态方法;
java文件 public class C1 { public static void f1() { Log.d("TAG","f1"); } }
3.lua:第一类值,主要对table的操做
lua文件 function f1() print('f1') end
当使用的地方也有f1方法时,前者会被后者覆盖;
4.object-c:object-c包含c,因此用c实现
头文件 void f1();
.m文件 void f1() { NSLog(@"f1"); }
当使用的地方也有f1方法时,编译会报重定义错误;
3. 模板
java模板没看到支持 T add(T a, T b)方法的。有 boolean add(T object)方法;即模板主要是用在容器上面;
1.c++:(与c相似),模板定义与实现最好不要分开,否则常常说找不到定义,因此通常都一块儿定义在.h,.hpp文件中。
.h 或者 .hpp 文件
类模板
template<class T> class A{ public: A(); T add(T a, T b) { return a + b; } };
函数模板
template<class T> T myAdd(T a, T b) { return a + b; }
2.java
接口模板
public interface List<E> extends Collection<E> { public boolean add(E object); }
类模板
public class Observable<T> { }
3.lua:
4.object-c:
C++里的模板是用来取代C里面的宏的
c模板:宏定义,没有类型检查,c++有,但也不是安全的
#define C_Add(a, b) a + b
object-c模板:Objective-C 不支持模板;java的接口(interface)和oc的协议(protocol)相似于c++模板方法模式,用继承去实现.