您当前的位置: 首页 >  Java

蓝不蓝编程

暂无认证

  • 0浏览

    0关注

    706博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

第二十一章:Java编程之面向对象

蓝不蓝编程 发布时间:2021-09-07 06:54:39 ,浏览量:0

面向对象

    先认识下面向对象编程,俗称OOP,全称:Object Oriented Programming,意为面向对象编程。将系统中的所有事物都看做对象,每个对象都有自己的特性和功能,就像公司的每个人都有自己的个性和职责一样,大家一起协作最后才能办成大事。

基本概念

     面向对象有这几个基本概念:类、对象、属性、方法、包、访问权限、继承、抽象、接口。一列出来,感觉东西比较多,其实不复杂,慢慢了解一下就好了。

用class关键字来声明,例如:

class Beauty { }

上面Beauty是类的名字。

对象

一个类要使用,一般要变成对象。 打个比方,类就是模具,对象就是模具做出来的东西,只需要一个模具,就可以做出千千万万的东西。样例如:

Beauty beauty1 = new Beauty();

Beauty beauty2 = new Beauty();

...

通过关键字new来根据类名生成新的对象。

属性

      属性就是类的特性、特质,就如我们描述一个人的时候,就会用年龄、身高、体重、三维等这些来描述。对于类,我们为了同样需要设置这些属性来描述清楚。举个样例:

public class Beauty {        public int age = 16;

       public String name = "都美竹";

}

方法

     方法就是类所具有的能力,譬如一辆车,就可以用来开;一个工厂,就可以用来生成东西。来个样例:

public class Beauty {

       public int age = 18;

       public String name = "热巴";

       public String buy(int money) {               return "Mac口红";

       }

}

上面的buy方法就是Beauty类中的一个方法,前面的String表示返回值类型为字符串,毕竟干什么事情都得有个结果,所以大多数方法都有个返回值,如果确实没有,就写个void,像下面这样:

      后面括号里的是方法的输入参数,干任何事都可能需要一些资源和前提条件,如果有多个参数,就用逗号分隔

一下;如果没有,那括号里面就啥也不要写。(不需要的情况可能不多,毕竟干啥事都得有点资源,就像买东西要钱,买iphone要肾)。

多来几个例子,让大家更好地感受一下:

1、无参数方法

public String buy() {

       return "买买买";

 }

2、多参数方法

public String buy(int money,String city) {

       return "到魔都买买买";

 }

3、无返回值方法

public void buy(int money,String city) {

       //理性消费。

 }

    包,其实不是包,可以理解为文件夹,就是为了方便分类

管理,不然所有的类都放在一个文件夹下,无数个文件就让人眼花缭乱了。

    一般,每个类都会放到某个包下面,用package开头,后面一串路径,用“.”分隔。

    如果你要使用别人的类,也需要知道那个类在哪个包下面,这样才能找得对。其实有点像门牌号,得按照国家、省、市、区,一级一级才能找得到。看看下面具体的代码:

访问权限

      如果你有什么小秘密,一定会藏起来;你有什么过人之处,一定会想办法表现出来。访问权限,说得其实这回事,通过设置访问权限,把秘密藏起来,把技能表现出来。

回到正题,我们可以用三个关键字来设置方法和属性的访问权限:

public: 表示谁可以访问。

protected:只有自己继承类才能看得到。

private:私有,除了自己,其他人都看不到。

     除去上面三个,其实还有一个,就是不带上面三个关键字中任何一个。这种情况表示当前包内可以看到和使用(上面已经解释了包的概念,如果不清楚,可以往上翻)。

上例子:

如果不想人知道年龄,就把“public int age = 22;”

修改为:“private int age = 22;”

如果不想让你知道自己爱买东西,就把“public String buy”

修改为:“private String buy”

public class Beauty {

       public int age = 22;

       public String name = "谢某人";

       public String buy(int money) {             

              return "买买买";

       }

}

当然上面说的这种隐藏属性和方法的技能,只能防君子,不能防小人,哈哈。因为还有其他技能可以窥探,后面会细讲。

继承

    Java中的类可以从其他类继承(使用关键字:extends ),自动获得其他类的能力(访问权限为public、protected的方法和属性)。样例如下:

public class SupperBeauty extends Beauty { }

这个类就自动获得了Beauty类的所有能力。在这里,Beauty类我们称之为父类;SupperBeauty称之为子类。

抽象

    在类里面,可以设置某些方法为抽象方法,自己只是留个坑位,具体的工作交给子类去完成。举例:

父类Beauty定位为“public abstract class Beauty”表明自己是个抽象类,内部包含一个抽象方法“abstract void doIt();”

子类SupperBeauty:需要实现父类中声明为abstract的方法。

      在上面的SuperBeauty代码中,就实现了父类Beauty中的doIt方法。如果还有XXBeauty类,也可以继承Beauty类,然后实现doIt方法,里面具体做什么,就各自去定。

为什么要这么做呢?

     如果你有这样的疑问,就给自己点个赞。毕竟学问,学问,不只是要学,还要问。编程里的这些东西,都是有其用处的,否则搞这些干嘛呢?

     试想一下,有10种类型的车需要喷漆,但是每种车喷漆都有自己的要求,那我们就可以创建一个父类车,定义个喷漆的方法。然后各个子类对应不同类型的车,自己去实现喷漆这个方法,这样最终要喷漆的时候,调用各个子类的喷漆方法就可以了。

接口

     接口和上面的抽象类、抽象方法是一个派系的,只是更为单纯。对于调用者来说,希望尽可能少的了解无关的信息。就跟买辆车,你肯定不想了解发动机为什么能转起来,空调又是如何制冷的。对于系统设计来说,也是一样,每个人都尽量把细节放在自己肚子里,让别人知道得越少越好,这样的系统才更为健壮,也更能适应社会的发展,哦不,是适应产品经理的思维发展。(你的程序设计不够好,就完全hold不住产品经理每晚的奇思妙想)

扯远了。接口使用interface定义,内部可以定义多个方法

接口需要有类来实现,通过implements关键字来指定实现什么接口,样例如下:

那使用者如何使用呢?看下面代码:

注意,声明的时候,用的是Love这个接口,而不是直接使用的Beauty这个类。

为什么要这样呢?

这是为了最大程度的通用性,因为接口比实现类简单,在方法调用时,当做参数传来传去,最方便,以后修改起来也简单。

关注
打赏
1639405877
查看更多评论
立即登录/注册

微信扫码登录

0.1242s