方法
一、方法的分类
-
构造方法
-
实例方法
-
类方法
构造方法
给出类所创建的对象的初始状态,(给对象的属性赋值) 在创建对象之后自动调用 构造方法的格式:方法名与类名相同,没有返回值
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关键字修饰的方法,类方法也称为静态方法
-
静态方法不需要通过它所属的类的任何实例就可被调用
-
在静态方法中不能使用this和super关键字
-
不能直接访问所属类的实例变量和实例方法,但是可以直接访问所属类的静态变量和静态方法。
实例方法
除构造方法外,没有被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 方法。
-
如果不能继承一个方法,则不能重写这个方法。
方法的调用
-
没有使用 static 修饰的成员变量和方法都必须使用对象来调用。