开启Java之旅——004方法的定义和调用1(24.3.20)

本文详细解释了Java中方法的定义结构,包括返回值、参数、访问修饰符(public、protected、default、private)的作用,以及static、abstract和final等关键字的特性和应用。重点展示了如何在类和子类间控制方法的可见性和重写规则。
摘要由CSDN通过智能技术生成

方法的定义和调用

一、方法的定义

方法(Method)

方法包括一个方法的开头和一个方法体

[修饰符]  [返回值类型] 方法名(参数类型 参数名){

方法体;

return 返回值;

}

1、修饰符
*访问修饰符

用来控制类、方法和变量的访问权限

public:公共访问修饰符            protected:保护访问修饰符

default:默认访问修饰符           private:私有访问修饰符

(1)public:公共访问修饰符 

使用 public 修饰的变量、方法或类可以被任意访问,无访问限制。也就是说,public 修饰的成员可以被任何包下的任何类访问

package com.sh.work;

public class Person {
    public String name;//name:String类型的公有(public)成员变量,用于存储人员姓名
    public int age;//age:int类型的公有(public)成员变量,用于存储人员年龄

    public void sayHello() {//一个公有(public)无返回值的方法,被调用时会在控制台输出
        System.out.println("Hello, World!");
    }
    //该类包含一个main方法,属于类级别的静态方法。
    public static void main(String[] args) {
        Person person = new Person();//在main方法中,创建了一个名为person的Person对象
        // 随后为person对象的name属性赋值为"Alice",age属性赋值为30,然后调用person对象的sayHello方法
        person.name = "Alice";
        person.age = 30;
        person.sayHello();
    }
}
//当在其他类中想要使用Person类时,需要使用import com.sh.work.Person;将Person类引入到代码中
(2)protected:保护访问修饰符

使用 protected 修饰的变量、方法或类可以被其本身、子类、同一包内的其他类访问。也就是说,protected 修饰的成员可以通过子类对象、同一包内的对象访问,不能通过类名直接访问

package com.sh.work;

public class Person1 {
    protected String name;
    protected int age;
    protected void sayHello() {
        System.out.println("Hello, World!");
    }
}
package com.sh.work;

 public class Student extends Person1 {
    public void study() {
        System.out.println("Studying...");
    }
}
//继承自Person1类,因此可以访问并继承Person1类中的受保护成员变量和方法
//声明了一个成员方法study(),用于输出"Studying…"。

package com.sh.work;
public class Main {
    public static void main(String[] args) {
        Student s = new Student();
        s.name = "Tom";
        s.age = 18;
        s.sayHello(); // 子类可以访问父类的 protected 成员方法
    }
}
//在main方法中创建了一个Student对象 s
//设置了s对象的name和age属性为 “Tom” 和 18
//调用s对象的sayHello() 方法,由于sayHello()方法是受保护的,可以在子类中访问父类的受保护方法并输出"Hello, World!"
(3)default:默认访问修饰符

如果没有为变量、方法或类指定任何访问修饰符,则默认为 default 访问修饰符,也叫包访问修饰符。使用 default 修饰的变量、方法或类只能被相同包内的其他类访问 

package com.sh.work;

class Person2 {
    String name;
    int age;
    void sayHello(){
        System.out.println("Hello,World!");
    }
}
package com.sh.work;

public class Mainp {
    public static void main(String[] args) {
        Person2 p = new Person2();
        p.name = "Tom";
        p.age = 18;
        p.sayHello();//可以访问同包中的类
    }
}
(4) private:私有访问修饰符

使用 private 修饰的变量、方法或类只能被其本身访问,不能被其他类访问。也就是说,private 修饰的成员变量和方法只能在类内部访问,不能通过对象或类名访问

*非访问修饰符

不用于控制类、成员变量、方法访问权限的一些特定功能标识符
例如:static、abstract、final、synchronized、volatile、transient

(1)static

static 关键字
含义: 静态的,全局的
用途: 用于修饰类、方法、变量和代码块

静态变量:
static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。静态变量也被称为类变量。局部变量不能被声明为 static 变量。

静态方法:
static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。

静态代码块:
用static修饰的代码块也叫静态代码块,是在类中独立于类成员的static语句块,它不在任何的方法体内,可以有多个,位置可以随便放,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。

无论是变量,方法,还是代码块,只要用static修饰,就是在类被加载时就已经"准备好了",也就是可以被使用或者已经被执行,都可以脱离对象而执行。反之,如果没有static,则必须要依赖于对象实例。

特性:
如果一个类要被声明为static的,只有一种情况,就是静态内部类。
静态内部类可以声明普通成员变量和方法,而普通内部类不能声明static成员变量和方法。用static修饰的方法,只能调用static变量和static方法,不能以任何形式引用this和super,是抽象方法abstract
用static修饰的变量,在定义时必须要进行初始化,且初始化时间要早于非静态变量。

(2) abstract

抽象类:抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。
一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误,抽象类可以包含抽象方法 和 非抽象方法。

抽象方法:
抽象方法是一种没有任何实现的方法,该方法的具体实现由子类提供。
抽象方法不能被声明成 final 和 static,任何继承抽象类的 子类必须实现父类的所有抽象方法,除非该子类也是抽象类。如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。
抽象类可以不包含抽象方法。抽象方法的声明以分号结尾(;)
 

(3) final

final 类不能被继承,没有类能够继承 final 类的任何特性,final 变量一旦被赋值就不能被改变。
final 方法不能被重写(可以被重载)
注意:
对于引用类型 来说, “不可变” 说的是 地址不可变
对于基本类型 来说, “不可变” 说的是 数据不可变                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值