C和Java都是常见的编程语言,但它们在面向对象编程方面存在一些显著区别。
语言结构
C: struct 类型名称 { 变量类型 变量名称; ... }; Java: public class 类名称 { 访问控制符 变量类型 变量名称; ... }
从语言结构可以看出,C语言使用结构体来模拟类的概念,而Java则直接使用class定义类。Java的类中的变量必须被定义访问控制符,而C语言的结构体中所有变量都是public的。
成员函数
C: void 类型名称_函数名称 (类型名称 *this) { ... } Java: 访问控制符 函数返回值类型 函数名称 (参数列表) { ... }
在C语言中,成员函数需要显式地传入一个指向当前对象的指针参数,而Java则不需要。此外,Java中可以使用访问控制符来控制函数的访问权限。
继承
C: struct 类型名称_子类名称 { 父类类型名称 父类对象; 子类自有变量类型 子类自有变量名称; ... }; Java: class 子类名称 extends 父类名称 { 子类自有变量类型 子类自有变量名称; ... }
C语言中没有直接的继承概念,而是通过在子类中嵌入一个父类对象来实现类似继承的概念。Java则使用extends关键字来实现继承,并且可以使用super关键字来调用父类的方法。
多态
C: typedef 父类类型名称 子类类型名称; Java: 父类名称 对象名称 = new 子类名称();
在C语言中,可以使用typedef来实现类型重命名。在Java中,可以创建一个父类对象并使用子类的构造函数进行初始化,从而实现多态。
综上所述,C语言与Java语言在面向对象编程方面有许多的异同之处。对于程序员来说,选择适合自己的编程语言是非常重要的。