面向对象编程思想

    其实很早就想提笔写一些关于面向对象方法方面的博客了,一直没有行动起来,今天终于开始了。其实作为一名程序员,在任何时候都不应该懒的,毕竟在这个行业需要刻苦,需要钻研。
   什么是面向对象呢?首先先来解释一下什么是对象吧。在现实世界钟,万事万物都是一个个的对象,例如某一个人,某一辆车,某一棵树,你手上正在使用的一部手机,或者你面前正在查阅的电脑。现实世界的这一系列对象,每一个都有其自身所独有的性质,并且每一个对象都有其自身的行为,通过这些行为,对象与对象之间产生了联系,实现了彼此之间的交互。而且,人们通常会根据这些对象的相似特征或者相似的行为进行分类。
   而计算机程序是为了解决现实生活问题而设计的。将现实生活中对象抽象出来,就形成了程序中的类。将对象的特征抽象出来,就成了类的属性,而对象的行为(用途或者功能)就对应于类中的方法。现实中,对象之间通过行为实现彼此的关联,程序中,类通过其定义的方法调用其他类实现彼此之间的交互,这样就把现实问题抽象成了程序来解决。
   面向过程的编程思想就是在解决问题的时候,把解决问题的方法,分解成了一个个步骤,然后每一个步骤又定义为一个函数,每一个函数解决一个小问题,这样整个大问题就通过一个个小问题,即一个个小步骤解决了。而面向对象编程思想,则是把问题分解成一个个对象,建立对象是为了描述某个事物在整个解决问题的步骤中的状态和行为,体现产生行为的各个对象之间的相互关系。
   下面讲一下如何创建类,我所使用的是Java语言。首先创建一个类Student:
       `

public class Student{     //定义一个学生类
                         String name;
                         int       age; 
                         public Student(){
                               //这是默认的构造函数;
                                   }
                         public Student(String name,int age){         //重载构造函数
                                this.name=name;
                                this.age=age;
                                }
                          public void study(String name,String  subjectName){  //定义学习方法
                                     System.out.println(name+" is studying "+subjectName);
                                     }
                }`

在上面的代码中,首行声明了一个类,类中有两个属性,一个String类型的name,一个int类型的age,还有一个方法study,这就对应于现实生活中的一个学生,有自己的名字,还有自己的年龄,她的行为就是读书。还是那句话,类是对象的抽象化。
class前面有一个public,这是一个访问修饰符,在java中,类的访问修饰符有四种:public、protect、private以及默认,每一种修饰符限定了该类可以被使用的不同的范围。而类中的成员变量(即属性),也有访问修饰符,如name和age,就是使用默认的。类中定义的成员变量和方法,其修饰符的使用范围如下:

访问修饰符 同类中 同包不同类中 不同包中 不同包但是有继承关系的子类中
private 可以 不可以 不可以 不可以
默认的 可以 可以 不可以 不可以
protected 可以 可以 不可以 可以
public 可以 可以 可以 可以
问控制存在的原因有以下两点:a、让客户端程序员无法接触他们不应该碰的东西 ; b、允许库设计者可以改变类内部的工作方式而不用担心会影响到客户端程序员。
public能用来修饰类,在一个java源文件中只能有一个类被声明为public,而且一旦有一个类为public,那这个java源文件的文件名就必须要和这个被public所修饰的类的类名相同,否则编译不能通过。一个类作为外部类的时候只能被public或者默认访问修饰符所修饰,但是一个类如果作为内部类的时候,则可以被四种访问修饰符所修饰,因为一个类作为内部类的时候,就作为外部类的一个成员属性了,因此可以有四种访问修饰符修饰,这是内部类和外部类的一个区别。
上文中的类,其内部有两个名字相同的方法,即Student,可以看到,它的前面只有public修饰符,煤油返回值类型,这就是所说的构造函数或者说是构造方法。构造函数不是一般的构造函数,虽然可以有参数,但是不能有返回值,这是因为构造函数通常在定义一个新的对象时调用,他无法检查构造函数的返回值。在实际应用中,如果没有给类定义构造函数,则编译系统将为该类生成一个缺省的构造函数,即默认的构造函数,该缺省的构造函数没有参数,只是简单的的把对象的每一个实例变量初始化为0。
大家有没有注意到,有两个构造函数,这就涉及了函数重载(方法重载)。函数重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数类型或参数个数或者参数顺序。调用重载函数时,Java编译器能通过检查调用的方法的参数类型和个数或顺序选择一个恰当的方法。方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数或者参数的顺序不同的方法。Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数。调用方法时通过传递给它们的不同个数和类型或顺序的参数来决定具体使用哪个方法。
上述代码中还涉及了关键字this,那么什么时候要用this关键字?a.调用构造方法:this(参数值,…); b.参数名和属性名一致时,要使用this来做区分,如上述代码,this.name=name,this指代被实例化的对象,this.name代表实例化的对象的名字属性,赋值号(“=”)右边的name就是代指形参。如实例化对象,Student stu = new Student(“李白”,19),this.name = name ,表示stu.name = “李白”。注意,Java有就近原则,参数名和属性名一致时,在方法中使用这个名字,这个名字是谁。
讲的有点偏细节了,重新回到面向对象的编程思想。与传统的面向过程的程序设计方法相比,面向对象的程序设计方法有三个优点:a.程序的可维护性好,面向对象程序易于阅读和理解,程序员只需了解必要的细节,因此降低了程序的复杂性;b.程序的已修改性好,程序员可以很容易的添加修改删除程序的属性,这是通过添加或者删除对象来完成的;c.对象可以使用多次,也就是可重用性好,程序员可以根据需要将类和对象保存起来,随时插入到应用程序中,无需做任何修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值