一篇关于面向对象理解的文章推荐

8 篇文章 0 订阅

一篇关于面向对象理解的文章推荐:面向对象编程,我的思想

http://blog.csdn.net/flashmagic/article/details/19999

笔记:

类描述了一组有相同特性属性和相同行为方法的对象

类是属性与方法的集合

对象具有类所描述的所有的属性以及方法

可以把函数想象成一个“实现某种特定功能的黑匣子

面向对象的编程语言最大的特色就是可以编写自己所需的数据类型

我们一般会把类的属性声明为私有的,而把类的方法声明为公共的

对象调方法,方法改属性

声明只是告诉计算机将要有这样的一个变量(对象),在内存中它并不为这个变量(对象)分配内存

只有在定义的时候才会给这个变量(对象)分配内存

千万不要有这种想法:“试图对类进行操作!

在创建对象时计算机只给这个对象的所有的属性分配了内存,而并没有给方法分配内存。方法只有一个,是属于所有的对象的,所以无论创建了多少个对象,计算机只会为一个方法分配一块内存

 构造函数是类中最特殊的函数

              从特征上来说:1.它是编程语言中唯一没有返回值类型的函数。

                            2.它的名称与类的名称必须要完全相同。

                            3.它必须被声明为公共(public)的类型

                            4,可以对构造函数进行重载。

                            5.它在创建对象是自动被调用。

              从功能上来说:1.它是对类中的属性进行初始化。

提倡的是自己定义构造函数,而不是用系统的默认构造函数

   public employee(String n,int a,char s,float e,boolean l){ //看这个构造函数

              name = n;         //设置员工姓名

              age = a;          //设置员工年龄

              sex = s;          //设置员工性别

              emolument = e;    //设置员工薪水

              lunch =l;          //设置员工午餐

}

jingwei = new employee("jingwei",20,'M',100,false);

重载与重构:

     在JAVA中:

1.       函数重载是一个类中声明了多个同名的方法,但有不同的参数个数和参数类型。

2.       函数重构是指在子类中声明与父类同名的方法,从而覆盖了父类的方法。重构解决了子类与父类的差异问题。

   在C++中:

1.  重载的概念一样。

2.  重构的概念可就不一样了,C++中功能更为庞大的虚函数。

public class employee{

       public employee(String n,int a,char s,float e,boolean l){ //看这个构造函数

              name = n;         //设置员工姓名

              age = a;          //设置员工年龄

              sex = s;          //设置员工性别

              emolument = e;    //设置员工薪水

              lunch =l;          //设置员工午餐

}

 

public employee(){   //请注意这个函数没有参数

       name = “jw”;

       age = 20;

       sex = ’W’;

       emolument = 99;

       lunch = true

}

//……等等

};

重载普通的函数与重载构造函数大同小异,不过他多了一个 this 指针! this 一般是对当前对象的引用。这么说吧,如果涉及到两个以上的对象时就会使用 this 指针。每个成员函数都有一个 this 指针,它是一个隐藏的参数, this 指针只向调用它的对象!我说过方法只有一份,而对象都有自己的属性,当对象调用方法来先是属性的时候,他怎么来判断调用的时不是自己的属性呢?这就需要 this 指针来大显神威了。

把一个变量或函数声明为静态的需要“static”这个关键字。声明静态的目的是“为某个类的所有对象的某个属性或方法分配单一的存储空间”。静态的数据是属于类的,不属于任何的对象。静态的数据在声明的时候系统就为他分配了内存空间,而不用等到创建对象时。

关于静态函数我想就没什么可多说的了。给我的感觉就是,它也是属于类的,在定义的时候就分配的内存。调用是可以使用类名直接调用。其他的和普通成员函数没什么不同的了不过这里需要说明的一点是:在JAVA中,静态的成员函数只能修改静态的属性,而静态的属性可以被所有的成员函数修改。不过在C++中就没这么多事儿了!

子类的对象拥有父类的所有的属性和方法

在创建一个子类对象时首先要调用的是父类的构造函数,然后再调用子类的构造函数,毕竟,子类的构造函数不包括父类的属性的初始化功能!

多态的理解:比如有一个父类superClass,它有2个子类subClass1,subClass2。superClass有一个方法
func(),两个子类都重写了这个方法。那么我们可以定义一个superClass的引用obj,让它指向一个子类的对象,比如superClass obj = new subClass1();那么我们调用obj.func()方法时候,会进行动态绑定,也就是obj它的实际类型的func()方法,即subClass1的func()方法。同样你写superClass obj = new subClass2();obj.func()其实调用的是subClass2的func()方法。这种由于子类重写父类方法,然后用父类引用指向子类对象,调用方法时候会进行动态绑定,这就是多态。多态对程序的扩展具有非常大的作用,比如你要再有一个subClass3,你需要改动的东西会少很多,要是使用了配置文件那就可以不动源代码了。(本段转自:http://zhidao.baidu.com/question/328532797.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值