方法
一、方法的分类
构造方法
给出类所创建的对象的初始状态,(给对象的属性赋值) 在创建对象之后自动调用 构造方法的格式:方法名与类名相同,没有返回值
class person {
? public person(){} ? // 默认无参构造方法
? public person(参数列表){} ? // 定义构造方法
? …
? // 类主体
}
//方法名必须与类名相同
可以有 0 个、1 个或多个参数
没有任何返回值,包括 void
默认返回类型就是对象类型本身
只能与 new 运算符结合使用
示例:创建一个car类
public class car构造方法 {
? String name;
? double price;
//无参构造器
? public car构造方法(){
? ? ? System.out.println("无参构造器被触发执行");
? }
? //有参构造器
? public car构造方法(String n, double p){
? ? ? System.out.println("有参构造器被触发且执行");
name=n;
price=p;
? }
}
创建main方法来调用
public class cartest构造方法 {
? public static void main(String[] args) {
? ? ? car构造方法 c=new c0car构造方法();
? ? ? System.out.println(c.name);
? ? ? System.out.println(c.price);
?
? ? ? car构造方法 c2=new c0car构造方法("baoma",88);
? ? ? System.out.println(c2.name);
? ? ? System.out.println(c2.price);
? }
}
类方法
被static关键字修饰的方法,类方法也称为静态方法
实例方法
除构造方法外,没有被static修饰的方法
public class StaticMethod {
? public static int count = 1; ? // 定义静态变量count
? public int method1() { ? ?
? ? ? // 实例方法method1
? ? ? count++; ? // 访问静态变量count并赋值
? ? ? System.out.println("在静态方法 method1()中的 count="+count); ? // 打印count
? ? ? return count;
? }
? public static int method2() { ? ?
? ? ? // 静态方法method2
? ? ? count += count; ? // 访问静态变量count并赋值
? ? ? System.out.println("在静态方法 method2()中的 count="+count); ? // 打印count
? ? ? return count;
? }
? public static void PrintCount() { ? ?
? ? ? // 静态方法PrintCount
? ? ? count += 2;
? ? ? System.out.println("在静态方法 PrintCount()中的 count="+count); ? // 打印count
? }
? public static void main(String[] args) {
? ? ? StaticMethod sft = new StaticMethod();
? ? ? // 通过实例对象调用实例方法
? ? ? System.out.println("method1() 方法返回值 intro1="+sft.method1());
? ? ? // 直接调用静态方法
? ? ? System.out.println("method2() 方法返回值 intro1="+method2());
? ? ? // 通过类名调用静态方法,打印 count
? ? ? StaticMethod.PrintCount();
? }
}
二、方法重载
在同一个类中,方法名称相同而形参列表不同。形参列表不同是指形参列表的个数或顺序或类型不同,而参数名不同不能认为是方法重载
三、方法重写
-
当父类中的方法无法满足子类需求时需要方法重写 -
方法重写又称为方法覆盖,在子类中创建一个与父类中的方法名称相同,返回值类型相同,形参列表相同,而方法体中的内容不同的方法即称为方法重写 方法重写时要注意的点 -
访问权限不能比父类的方法访问权限低 -
声明为static和final的不能悲惨重写 -
构造方法不能被重写 -
子类和父类在同一个包中时,子类可以重写父类的所有方法,除了声明为 private 和 final 的方法。 -
子类和父类不在同一个包中时,子类只能重写父类的声明为 public 和 protected 的非 final 方法。 -
如果不能继承一个方法,则不能重写这个方法。
方法的调用
|