方法
方法
1. 方法调用机制
本人解读:方法的调用机制主要是和java中的栈空间,堆空间,方法区相连,主函数main执行单独开辟一个main栈空间,执行到方法也单独开辟一个栈空间,之后主要还是java内部结构,与对象内存机制相连
2. 方法定义方式
自我解读:java方法定义中,出来返回数据类型前面的访问修饰符外,其余部分基本与C语言相同。
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中引用数据类型
-
一,引用类型作为参数
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接口的类。
5. 默认方法
5.1 只有接口中有默人方法。
5.2 抽象方法的使用
注意:抽象方法没有方法体
5.3 抽象的简单理解
何为抽象,我的理解就是:抽象就是不去关注具体的细节实现,只是从整体层面上表现出这种意思,而不是具体关注细节。这只是方法抽象的意思,还有类抽象和接口抽象,层面不一样,抽象的理解就不一样.但抽象本质还是不关心具体实现,只提出群体规范。
举例:
1.水果店买水果:我要三斤水果,老板会给你那三金水果,而你不用关注具体什么类型的水果,老板会给你调好。
2.抽象方法:没有实现体,只有方法名,像cry叫这个方法,他是抽象的,表达叫这个意思,但是具体实现又另一方实现。
3.
作者:yzh先生
博客:https://www.cnblogs.com/ZiJun
本文版权归作者和博客园共有,转载请在文章中注明原文链接:https://www.cnblogs.com/ZiJun/p/18755662 ,愿尊重劳动成果,谢谢!
若有关于博客内容的各种问题,欢迎在评论区讨论或发消息,让我们一起进步!