零度非安全 发表于 2017-1-24 12:23:07

【Java 教程(原创)】017.类(中)

本帖最后由 零度非安全 于 2017-1-25 18:51 编辑

点击图片穿越到 索引帖,听说有惊喜!











在上一讲中非安全哥哥给你们简单介绍了 Java 类中的对象
接下来给大家讲下类的方法

方法
我们再来回顾下一个类的类体的组成部分,你还记得吗?
即变量的声明和方法的定义
若不清楚的鱼油请返回上一讲再看看

那我们先来看下方法大概是长什么样子的,其实全是一个“屌丝样”。
方法声明部分{
    方法体中的内容
}
没错,这就是方法的定义,它跟类一样也是包括了两个部分,一个是方法声明,另一个是方法体。

那好,我就为大家分别讲下这两个部分。
----------- 华丽的分割线 -----------

方法声明

最基本的方法声明包括方法名和方法的返回类型,例如下面这位哥们长这样。
float area(){
    .
    .
    .
}
方法返回的数据类型可以是任意的 Java 数据类型,当一个方法不需要返回数据时,返回类型必须是 void。

很多方法声明中都给出了方法的参数,参数是用逗号隔开的一些变量声明。方法的参数可以是任意的 Java 数据类型。

方法的名字必须符合标识符的规定,给方法起名字的习惯和给变量起名字的习惯类似,在这里就不重复啰嗦了,举个栗子。
float getTrangleArea()
void setCircleRadius(double radius)
下面的 Triangle 类中有 5 个方法。
class Triangle{
    double sideA,sideB,sideC;
    void setSide(double a,double b,double c){
      sideA = a;
      sideB = b;
      sideC = c;
    }
    double getSideA(){
      return sideA;
    }
    double getSideB(){
      return sideB;
    }
    double getSideC(){
      return sideC;
    }
    boolean isOrNotTrangle(){
      if(sideA + sideB > sideC && sideA + sideC > sideB && sideB + sideC > sideA){
            return true;
      }
      else{
            return false;
      }
    }
}

方法体
方法声明之后的一对大括号“ { ”,“ } ”以及之间的内容称为方法的方法体。方法体内容包括局部变量的声明和 Java 语句,例如:
int getSum(int n){
    int sum = 0;                  //声明局部变量
    for(int i = 1;i <= n;i++){      //for循环语句
      sum = sum + i;
    }
    return sum;                     //return语句
}

方法参数和方法内声明的变量称为局部变量,和类的成员变量不同的是,局部变量和声明的位置有关。

写一个方法和在 C 语言中写一个函数完全类似,只不过在面向对象语言中称为方法,因此如果鱼油有比较好的 C 语言基

础,编写方法的方法体已不在是难点。


重载

Java 中存在两种多态,即重载(Overload)和重写(Override),重写是和继承有关的多态,这个会在以后讲到。

方法重载是多态性的一种,例如,一位鱼油跑过来问非安全哥哥:“哥哥,帮我写一个求面积的方法{:10_254:} ”,那我可能会

问你求什么面积呀?





功能多态性:是指可以向功能传递不同的消息,以便让对象根据相应的消息来产生相应的行为。对象的功能通过类

中的方法来体现,那么功能的多态性就是方法的重载。





方法重载的意思是,一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,

或者是参数的类型不同。在下面的 Area 类中,getArea 方法是一个重载方法。
class Area{
    float getArea(float r){
      return 3.14f * r * r;
    }
    double getArea(float x,int y){
      return x * y;
    }
    float getArea(int x,float y){
      return x * y;
    }
    double getArea(float x,float y,float z){
      return (x * x + y * y + z * z) * 2.0;
    }
}

【特别注意】贴子中的栗子希望鱼油们能自觉的手动敲上去,不要单纯的复制粘贴保存,然后编译运行。



☞点我前往上一讲☜
☞点我前往下一讲☜

851364759 发表于 2017-1-24 21:51:39

虽然看不懂 但是为了金币 拼了

零度非安全 发表于 2017-1-24 22:07:16

851364759 发表于 2017-1-24 21:51
虽然看不懂 但是为了金币 拼了

下次不能再这样了

pyt1 发表于 2017-2-23 23:13:40

重载和重写总是分不清,重载相同功能的多态性,理解了

鱼尾 发表于 2017-2-24 15:44:44

基础学过一些,看看举得例子,回顾回顾

零度非安全 发表于 2017-2-24 21:01:10

pyt1 发表于 2017-2-23 23:13
重载和重写总是分不清,重载相同功能的多态性,理解了

nice哟!!!

零度非安全 发表于 2017-2-24 21:01:36

鱼尾 发表于 2017-2-24 15:44
基础学过一些,看看举得例子,回顾回顾

我喜欢爱学习的好孩纸!!!

CarpLyy 发表于 2017-3-20 16:57:12

继续学习

niguige 发表于 2018-5-15 11:33:41

851364759 发表于 2017-1-24 21:51
虽然看不懂 但是为了金币 拼了

可以可以

离荟 发表于 2019-10-24 15:53:21

讲的很好
页: [1]
查看完整版本: 【Java 教程(原创)】017.类(中)