鱼C论坛

 找回密码
 立即注册
查看: 7333|回复: 9

[系列教程] 【Java 教程(原创)】017.类(中)

[复制链接]
发表于 2017-1-24 12:23:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

☟



在上一讲中非安全哥哥给你们简单介绍了 Java 类中的对象

接下来给大家讲下类的方法

☠

方法

我们再来回顾下一个类的类体的组成部分,你还记得吗?

即变量的声明和方法的定义

若不清楚的鱼油请返回上一讲再看看

☠

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

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

☠

方法声明

❁

最基本的方法声明包括方法名和方法的返回类型,例如下面这位哥们长这样。
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;
        }
    }
}
0.gif

方法体

方法声明之后的一对大括号“ { ”,“ } ”以及之间的内容称为方法的方法体。方法体内容包括局部变量的声明和 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),重写是和继承有关的多态,这个会在以后讲到。

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

问你求什么面积呀?

1.png

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

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



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

或者是参数的类型不同。在下面的 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;
    }
}

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


&#10049;

&#9758;点我前往上一讲&#9756;

&#9758;点我前往下一讲&#9756;

&#10049;

评分

参与人数 2荣誉 +8 鱼币 +6 贡献 +2 收起 理由
fishc.love + 3 + 1 + 2
alltolove + 5 + 5 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-24 21:51:39 | 显示全部楼层
虽然看不懂 但是为了金币 拼了

评分

参与人数 1鱼币 +3 收起 理由
零度非安全 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-24 22:07:16 | 显示全部楼层
851364759 发表于 2017-1-24 21:51
虽然看不懂 但是为了金币 拼了

下次不能再这样了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-23 23:13:40 | 显示全部楼层
重载和重写总是分不清,重载相同功能的多态性,理解了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-24 15:44:44 | 显示全部楼层
基础学过一些,看看举得例子,回顾回顾
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-24 21:01:10 | 显示全部楼层
pyt1 发表于 2017-2-23 23:13
重载和重写总是分不清,重载相同功能的多态性,理解了

nice哟!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-24 21:01:36 | 显示全部楼层
鱼尾 发表于 2017-2-24 15:44
基础学过一些,看看举得例子,回顾回顾

我喜欢爱学习的好孩纸!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-20 16:57:12 | 显示全部楼层
继续学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-15 11:33:41 | 显示全部楼层
851364759 发表于 2017-1-24 21:51
虽然看不懂 但是为了金币 拼了

可以可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-24 15:53:21 From FishC Mobile | 显示全部楼层
讲的很好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 22:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表