方法就是一个代码片段. 类似于 C 语言中的 "函数"。方法存在的意义(不要背, 重在体会):
1.
是能够模块化的组织代码
(
当代码规模比较复杂的时候
).
2.
做到代码被重复使用
,
一份代码可以在多个位置使用
.
3. 让代码更好理解更简单
.
4.
直接调用现有方法开发
,
不必重复造轮子
.
示例:
class Point {
double x, y;
public Point(double _x, double _y) {
x = _x;
y = _y;
}
public double getDistance(Point p) {
return Math.sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
}
public static void main(String[ ] args) {
Point p1 = new Point(3.0, 4.0);
Point origin = new Point(0.0, 0.0);
System.out.println(p1.getDistance(origin));
}
}
示例2:计算两个整数相加
public class Method {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("第一次调用方法之前");
int ret = add(a, b);
System.out.println("第一次调用方法之后");
System.out.println("ret = " + ret);
System.out.println("第二次调用方法之前");
ret = add(30, 50);
System.out.println("第二次调用方法之后");
System.out.println("ret = " + ret);
}
public static int add(int x, int y) {
System.out.println("调用方法中 x = " + x + " y = " + y);
return x + y;
}
}
//
执行结果
一次调用方法之前
调用方法中
x
=
10
y
=
20
第一次调用方法之后
ret
=
30
第二次调用方法之前
调用方法中
x
=
30
y
=
50
第二次调用方法之后
ret
=
80
示例:构造方法重载(创建不同用户对象)
public class User {
int id; // id
String name; // 账户名
String pwd; // 密码
public User() {
}
public User(int id, String name) {
this.id = id;
this.name = name;
}
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
}
public static void main(String[ ] args) {
User u1 = new User();
User u2 = new User(101, "CSDN");
User u3 = new User(100, "祖国的花朵", "123456");
}
}
如果方法构造中形参名与属性名相同时,需要使用this关键字区分属性与形参。
this.id 表示属性id;id表示形参id
方法重写需要符合下面的三个要点:
= =
:方法名、形参列表相同。≤
:返回值类型和声明异常类型,子类小于等于父类。≥
:访问权限,子类大于等于父类
示例方法重写:
package com.itbaizhan.oop;
/**
* 测试方法的重写
*/
public class TestOverride {
public static void main(String[ ] args) {
Horse h = new Horse();
Plane p = new Plane();
h.run();
h.getVehicle();
p.run();
}
}
class Vehicle { //交通工具类
public void run() {
System.out.println("跑....");
}
public Vehicle getVehicle(){
System.out.println("给你一个交通工具!");
return null;
}
}
class Horse extends Vehicle { // 马也是交通工具
@Override
public void run() {
System.out.println("得得得....");
}
@Override
public Horse getVehicle() {
return new Horse();
}
}
class Plane extends Vehicle {
@Override
public void run() {
System.out.println("天上飞....");
}
}