方法

方法

1. 方法调用机制

本人解读:方法的调用机制主要是和java中的栈空间,堆空间,方法区相连,主函数main执行单独开辟一个main栈空间,执行到方法也单独开辟一个栈空间,之后主要还是java内部结构,与对象内存机制相连

Screenshot_2024-09-22-09-53-05-042_tv.danmaku.bili

2. 方法定义方式

自我解读:java方法定义中,出来返回数据类型前面的访问修饰符外,其余部分基本与C语言相同。

Screenshot_2024-09-22-10-07-31-953_tv.danmaku.bili

3. 方法的重载和重写

3.1 方法的重载

方法重载是指在同一个类中,定义多个方法,它们具有相同的名字但参数列表不同(参数的类型、参数数量或参数顺序不同)。方法名、参数列表(参数类型、数量和顺序)和返回类型,只要满足参数列表里面的三个其中一个就构成重载,其他两个方法名相同,表示是同一个方法的重载,返回类型无要求。

System.out.println(100);

System.out.println("小米");

System.out.println(1.2);上面示例中为什么println可以输出不同类型的值,原因就是方法的重载。

System是一个类,out是System类的属性,但out不是基本数据类型,它是PrintStream类的对象,所以就说,System类中的属性out引用了PrintStream类的对象,因此out可以调用PrintStream的方法println,该方法重载了许多,但参数类型不同,因此可以输出多种类型的值。

3.2 方法的重写

方法重写是指子类重新定义父类中已有的方法,以提供特定的实现,在一个类中,方法名相同,参数列表相同,返回类型相同或者是父类返回类型的子类。方法名、参数列表(参数类型、数量和顺序)和返回类型都必须与父类中的方法相同

4. 方法的数据类型之引用类型

4.1 5中引用数据类型

image-20250217231746361

  • 一,引用类型作为参数
    1.数组类型作为方法返回值
    方法体内return的返回类型与方法定义的返回值类型必须一致。
    2.数组类型作为参数
    调用时方法内的实参为数组为定义方法时的形参类型
    2.对象类型的参数
    对象属于引用数据类型,引用数据类型所传递的值为该对象的地址。
    当把一个对象作为参数传递给方法时,其实是把对象的地址传递给了该方法的参数。
    对象作为参数传递的时候要注意两点:
    1.在接收方,参数列表(形参),要写明对象类型(即 类),例如:
    public float getAvg(Students stu){}
    2.在调用方,参数列表(实参),只需要传入对象名即可,例如:
    avg=sc.getAvg(stu);
    3.对象数组类型的参数
    使用对象数组作为参数,只是将对象作为一个数组元素,其引用方法与基本数据类型的数组完全相同。
    但针对对象数组中的单个元素来讲,他又具有对象的属性和方法。

  • 二、接口作为引用类型

  • 作者:南瓜
    链接:https://www.zhihu.com/question/590312285/answer/2960746435
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    在Java中,抽象接口可以被其他类或接口所引用。引用的方式取决于接口的定义和使用情况,以下是一些常用的引用方式:

    1.作为方法参数 抽象接口可以作为方法的参数类型,使得方法可以接受任何实现该接口的对象作为参数。例如:

    public interface MyInterface {
        void myMethod();
    }
    
    public class MyClass {
        public void myMethod(MyInterface obj) {
            obj.myMethod();
        }
    }
    

    该代码定义了一个MyInterface接口和一个MyClass类,MyClass类的myMethod()方法接受一个实现了MyInterface接口的对象作为参数。

    2.作为返回值 抽象接口也可以作为方法的返回值类型,使得方法可以返回任何实现该接口的对象。例如:

    public interface MyInterface {
        void myMethod();
    }
    
    public class MyClass {
        public MyInterface getMyObject() {
            return new MyObject();
        }
    }
    
    public class MyObject implements MyInterface {
        public void myMethod() {
            System.out.println("MyObject.myMethod() called.");
        }
    }
    

    该代码定义了一个MyInterface接口和一个MyClass类,MyClass类的getMyObject()方法返回一个实现了MyInterface接口的MyObject对象。

    3.作为泛型类型 抽象接口也可以作为泛型类型,使得泛型类型参数可以接受任何实现该接口的对象。例如:

    public interface MyInterface {
        void myMethod();
    }
    
    public class MyClass<T extends MyInterface> {
        public void myMethod(T obj) {
            obj.myMethod();
        }
    }
    

    该代码定义了一个MyInterface接口和一个泛型类MyClass,该类的类型参数T必须是实现了MyInterface接口的类。

    总之,抽象接口在Java中应用广泛,可以作为方法参数、返回值和泛型类型,以便实现接口的灵活性和可重用性

5. 默认方法

5.1 只有接口中有默人方法。

image-20250213160807151

5.2 抽象方法的使用

注意:抽象方法没有方法体

image-20250213161648722

5.3 抽象的简单理解

何为抽象,我的理解就是:抽象就是不去关注具体的细节实现,只是从整体层面上表现出这种意思,而不是具体关注细节。这只是方法抽象的意思,还有类抽象和接口抽象,层面不一样,抽象的理解就不一样.但抽象本质还是不关心具体实现,只提出群体规范。

举例:
1.水果店买水果:我要三斤水果,老板会给你那三金水果,而你不用关注具体什么类型的水果,老板会给你调好。
2.抽象方法:没有实现体,只有方法名,像cry叫这个方法,他是抽象的,表达叫这个意思,但是具体实现又另一方实现。
3.image-20250222121750502

image-20250222122020212



posted @ 2025-03-06 16:16  JSESSIONID  阅读(19)  评论(0)    收藏  举报