QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

VIP至尊会员

Rank: 15Rank: 15Rank: 15

积分
2290
查看: 1166|回复: 8

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

[复制链接]
最佳答案
42 
累计签到:956 天
连续签到:1 天
零度非安全 发表于 2017-1-24 12:23:07 11668 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

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

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




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

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


方法

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

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

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


那我们先来看下方法大概是长什么样子的,其实全是一个“屌丝样”。
  1. 方法声明部分{
  2.     方法体中的内容
  3. }
复制代码

没错,这就是方法的定义,它跟类一样也是包括了两个部分,一个是方法声明,另一个是方法体。

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


方法声明


最基本的方法声明包括方法名和方法的返回类型,例如下面这位哥们长这样。
  1. float area(){
  2.     .
  3.     .
  4.     .
  5. }
复制代码

方法返回的数据类型可以是任意的 Java 数据类型,当一个方法不需要返回数据时,返回类型必须是 void。

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

方法的名字必须符合标识符的规定,给方法起名字的习惯和给变量起名字的习惯类似,在这里就不重复啰嗦了,举个栗子。
  1. float getTrangleArea()
  2. void setCircleRadius(double radius)
复制代码

下面的 Triangle 类中有 5 个方法。
  1. class Triangle{
  2.     double sideA,sideB,sideC;
  3.     void setSide(double a,double b,double c){
  4.         sideA = a;
  5.         sideB = b;
  6.         sideC = c;
  7.     }
  8.     double getSideA(){
  9.         return sideA;
  10.     }
  11.     double getSideB(){
  12.         return sideB;
  13.     }
  14.     double getSideC(){
  15.         return sideC;
  16.     }
  17.     boolean isOrNotTrangle(){
  18.         if(sideA + sideB > sideC && sideA + sideC > sideB && sideB + sideC > sideA){
  19.             return true;
  20.         }
  21.         else{
  22.             return false;
  23.         }
  24.     }
  25. }
复制代码

0.gif

方法体

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


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

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

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


重载


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

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

问你求什么面积呀?

1.png

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

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



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

或者是参数的类型不同。在下面的 Area 类中,getArea 方法是一个重载方法。
  1. class Area{
  2.     float getArea(float r){
  3.         return 3.14f * r * r;
  4.     }
  5.     double getArea(float x,int y){
  6.         return x * y;
  7.     }
  8.     float getArea(int x,float y){
  9.         return x * y;
  10.     }
  11.     double getArea(float x,float y,float z){
  12.         return (x * x + y * y + z * z) * 2.0;
  13.     }
  14. }
复制代码


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





评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
alltolove + 5 + 5 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

楼层
跳转到指定楼层
最佳答案
0 
累计签到:5 天
连续签到:1 天
851364759 发表于 2017-1-24 21:51:39 | 显示全部楼层
虽然看不懂 但是为了金币 拼了

评分

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

查看全部评分

最佳答案
42 
累计签到:956 天
连续签到:1 天
零度非安全  楼主| 发表于 2017-1-24 22:07:16 | 显示全部楼层
851364759 发表于 2017-1-24 21:51
虽然看不懂 但是为了金币 拼了

下次不能再这样了
最佳答案
0 
累计签到:20 天
连续签到:1 天
pyt1 发表于 2017-2-23 23:13:40 | 显示全部楼层
重载和重写总是分不清,重载相同功能的多态性,理解了
最佳答案
0 
累计签到:103 天
连续签到:1 天
鱼尾 发表于 2017-2-24 15:44:44 | 显示全部楼层
基础学过一些,看看举得例子,回顾回顾
最佳答案
42 
累计签到:956 天
连续签到:1 天
零度非安全  楼主| 发表于 2017-2-24 21:01:10 | 显示全部楼层
pyt1 发表于 2017-2-23 23:13
重载和重写总是分不清,重载相同功能的多态性,理解了

nice哟!!!
最佳答案
42 
累计签到:956 天
连续签到:1 天
零度非安全  楼主| 发表于 2017-2-24 21:01:36 | 显示全部楼层
鱼尾 发表于 2017-2-24 15:44
基础学过一些,看看举得例子,回顾回顾

我喜欢爱学习的好孩纸!!!
最佳答案
0 
累计签到:52 天
连续签到:1 天
CarpLyy 发表于 2017-3-20 16:57:12 | 显示全部楼层
继续学习
最佳答案
0 
累计签到:2 天
连续签到:2 天
niguige 发表于 5 天前 | 显示全部楼层
851364759 发表于 2017-1-24 21:51
虽然看不懂 但是为了金币 拼了

可以可以

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-5-20 23:44

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