声明:
[修饰符1 修饰符2...]返回值类型 方法名(形式参数列表)
{
程序代码;
[return 返回值];
}
有无返回值
有void修饰,无返回值
int------------------>return int 类型的值
string-------------->return String类型的值
数据类型-------->return 当前数据类型值
返回类、集合、流等
方法的返回值类型必须和return之后的值数据类型一样
方法的参数列表可以是有参数的,也可以是没有参数的。
使用方法的好处:提高代码的复用性
有参方法是指()中包含一个或多个变量的定义,也称为参数列表
无参方法是指()中不含参数
参数有两种:
形式参数(形参):在方法定义时用于接收外界输入的数据。定义方法时所携带的参数
实际参数(实参):调用方法时实际传给方法的数据
形参和实参的区别:
1形参只有在被调用的时候,才分配内存单元,在调用结束时立即释放内存单元,形参只在当前方法内部有效
2实参可以是常量、变量、表达式、方法 等。但是在进行方法调用前,必须要有确定的值。
3形参和实参在顺序、类型、长度、必须一致。
4实参到形参是单向的,
方法的调用:
1.直接调用:方法名(实参列表); //调用的前提是该方法存在于当前类中
2.类名调用:类名.方法名(实参列表); //调用的前提是该方法属于静态方法(也就是用static修饰的方法)
3.对象调用:对象.方法名(实参列表);
定义子类:(关键字extends继承)
public class Mananger extends Employee
{
方法和域...
}
此时,Employee是一个超类(父类),子类Mananger继承了他的父类。子类可以使用父类的公有信息,不能访问私有信息,不过我们可以通过调用父类的公有方法获得私有数据。
子构造器:super
super有俩个用途:一是调用超类的方法
二是调用超类的构造器(构造函数)
如果子类没有显示的调用超类的构造器,则将自动的调用超类默认(没有参数)的构造器。
理解方法的调用:
编辑器查看对象的申明类型和方法名。假设x.f(param),且隐式参数x声明为C类的对象。需要注意的是:有可能存在多个名字为f,但参数不一样的方法。例如,可能存在方法f(int)和方法f(String)。编译器将会一一列举所有C类中名为f的方法和其超类中访问类型为public且名为f的方法(超类的私有方法不能访问)。
接下来,编译器将查看调用方法时所提供的参数类型。如果在所以名为f的方法中存在一个与提供的参数类型完全匹配,就选择这个方法。这个过程被称为重载解析。例如,对于调用x.f("Hello")来说,编译器将会挑选f(String),而不是f(int)。如果编译器没有找到与参数类型匹配的方法,或者多个方法与之匹配,就会报一个错误。
举个栗子:
先建立一个java项目,把这些类放在一个包里面
,
这是一个父类,有私有属性age;
这是一个子类,继承了people类,也有一个age私有属性;
这是一个子类,继承了people类,有一个School类;
一个测试的类(Test)
结果:
1、图中第一个19就是new一个Student对象,然后设置值,再输出出来,好的没有什么问题(Test类中5,6,7行代码)。
2、之后的20 其实是调用的People类(父类)的方法,因为Student没有age可以设置,所以就往它的父类设置了
3、最后的“老师今年80了”和40 ,调用的也是父类的age,不过是用Teacher类的getAge()方法输出的,不是People类的。
多态
指的是对象变量是多态的。一个类的变量既可以引用它自己的对象,也可以引用它里面的任何一个子类对象。
栗子之后在补,没找到好的栗子(2019.08.18:22:00);
未完待续....