前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【Java基础】方法、类、对象

【Java基础】方法、类、对象

作者头像
全栈开发日记
发布2022-05-12 19:56:48
发布2022-05-12 19:56:48
39800
代码可运行
举报
文章被收录于专栏:全栈开发日记全栈开发日记
运行总次数:0
代码可运行

方法

方法的定义

什么是方法?简而言之,方法就是解决问题的办法。

在Java语言中,方法大多用于处理一些数据并得到结果,其包括以下几种要素:

  • 修饰符:用于限定方法的权限,常用的有public、private、static。
  • 返回值类型:方法运行后,得出的结果的数据类型;如果没有返回值,那么返回值类型为void
  • 方法名:自定义的标识符,满足标识符规范,使用骆驼峰命名法。
  • 参数列表:方法在运行过程中,若有未知的参数,需要定义在参数列表中。
  • return:用来结束方法并返回方法运行的结果,若无返回结果,可以没有return。

知道了方法的必要元素,可得知方法的定义格式如下:

代码语言:javascript
代码运行次数:0
运行
复制
修饰符 返回值类型 方法名(参数列表){
    方法体;
    return;
}

下面我们举几个例子:

  1. 定义一个公有静态方法,打印传入的参数 //由上题我们可以看出,方法的修饰符是 公有的、静态的,有一个参数,只是打印所以并没有返回值。 //那么这个方法可以这样定义 public static void printParam(String param){ System.out.println(param); }
  2. 定义一个私有方法,传入两个参数,返回两个数的和 //同上我们得到方法的修饰符是 私有的,有两个参数,返回值是两个数的和 //那么这个方法我们可以这样定义 private int sum(int a, int b){ return a+b; }

注意 关于方法的定义及使用有以下几点注意事项。

  1. 方法的定义不分先后顺序。
  2. 方法的定义不能产生嵌套包含关系。
  3. 方法定义好以后不会自动执行, 若想执行,需要进行调用。
  4. 方法中return下不能有任何代码。
  5. 方法的返回值类型和return后的数据类型必须匹配。

方法的重载

Java语言规定,在同一个类中,允许出现同名的方法,只要方法的参数列表不同即可,这就是方法的重载。

参数列表不同,指的是个数、顺序或数据类型不同。

重载和参数变量名、返回值类型、修饰符无关,主要看方法名和参数列表。

看下面这个例子:

代码语言:javascript
代码运行次数:0
运行
复制
public class Test01{
    public static int sum(int a, int b){
        return a+b
    }
    public static int sum(int a, int b, int c){
        return a+b+c
    }
}

以上代码片段就是对方法的重载,两个方法名都是sum,但是参数列表不同,如果在调用参数时传入两个参数那么程序会调用上面的方法,反之,如果传入三个参数,程序则会调用下面的方法。

方法的重写 Override

子类中如果出现了与父类一模一样的方法时,子类会重写父类的方法。方法声明要与父类相同,而且修饰权限不能比父类更低。

此处内容在后期讲解继承的时候会再次详解。

类是什么?生活中的解释就是由一些具有共同特征的个体组成的一个群体,比如人类。在Java中也是如此,更加专业的说法是描述一类对象的行为和状态。

在Java语言中存在一些提前由jdk开发者定义好的类,我们可以直接导入调用,比如String等等。当然,我们也可以自定义类。

自定义类即是对现实中事物的描述,描述事物的属性方法。

类的定义很简单,如下:

代码语言:javascript
代码运行次数:0
运行
复制
修饰符 class 类名{
    内容
}

那么内容中应该存在些什么呢,其中有三,属性、方法、构造器(后期详解)。

下面我们来定义一个简单的人类:

代码语言:javascript
代码运行次数:0
运行
复制
public class Person{
    /** 名字属性 */
    public String name;
    /** 年龄属性 */
    public int age;
    /** 性别属性 */
    public String gender;
    
    /** 吃饭方法 */
    public void eat(){
        int a = 1;
        System.out.println(this.name + "在吃饭,吃了" + a + "口。");
    }
}

对象

上面说到类是对某一种事物的抽象描述,那么对象就是用于表示该类事物的个体。

比如,我们来创建一个人类的对象:

代码语言:javascript
代码运行次数:0
运行
复制
public class Test02{
    Person person = new Person();
    person.name = "张三";
    person.age = 18;
    person.gender = "男";
    
    person.eat();
}

以上代码片段就是new了一个人类的对象,并对其各属性进行了赋值,又调用了人类中的吃饭方法。

成员变量和局部变量

直接在类中定义的变量称之为成员变量,如Person类中的name、age、gender都是成员变量;而在方法、语句中定义的变量称之为局部变量,如eat方法中的a。那么他们二者有什么不同之处呢?且看下表:

成员变量

局部变量

作用域不同

作用返回在整个类中

作用在方法、语句内

定义的位置不同

定义在类中,方法外

定义在方法内、语句内

默认值不同

有默认值

没有默认值,不赋值不能使用

生命周期不同

量跟随对象子啊堆内存中存储,内存等待 JVM 清理

跟随方法进栈

内存位置不同

存在与推内存

存在于方法栈

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈开发日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方法
  • 对象
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档