最近在学习C++和Java,记下些许理解,希望有缘读到的人可以给指点。
关于OOP编程的优缺点和基本思想,请移驾这里,很详细。在我学习阶段,受益匪浅。
虽然我们知道面向对象编程(oop)的基本思想是相同的,但是各种语言还是有自己独特的语法的。比如:
定义类和实例化。C++中这样做:
class User{
//省略访问修饰符表示这个数据位于类的私有部分
string name;
int age;
//public访问修饰符表示这个数据位于类的公共部分
public :
User (){}
User(string nam,int ag){
name = nam;
age = ag;
}
//构造函数还有这样一种变型。
//成员初始化语法涉及到类实例的数据成员在构造函数中是如何进行初始化的。以后会详细记录。
User (string nam,int ag):name(nam),age(ag){}
};
C++语法中有两种实例化对象的方法。
//1.可以理解为u是一个User对象。如果想要访问u中成员,需用“.”操作符
User u("lwj",24);
//2.p为指向一个User对象的指针。如果想要访问p指向对象中成员,需用“->”操作符
User* p = new User("xiaoh",22)
Java定义类和创建对象是这样的:
public class User {
//Java访问修饰符需位于类、方法、变量之前。表示私有成员,外界无法直接访问
//关于java和C++的权限修饰符比较,以后再记。
private String name;
private int age;
public User(String name ,int age){
this.name = name;
this.age = age;
}
public static void main(String[] args){
//user 为指向一个User对象的伪指针
User user = new User("lvweijie",22);
}
}
之所以说Java中user是一个伪指针是因为它并不能像C++指针一样进行解引用(dereference)。事实上是在Java这个例子中,“=”右边调用User的构造函数在内存中创建一个User对象并返回一个引用,然后赋值符号将这个引用赋给变量user。即使JVM把这个User对象移动到内存的不同位置,user引用依然能找到这个对象。
博客比较浅薄,只是因为本人理解肤浅,希望以后能记录更多有思想,有深度的博客。