Java中的方法分为很多说种,有main方法,类方法,实例方法,静态方法,构造方法,普通方法,抽象方法,对象方法,接口方法。
main方法是JVM调用类中的方法,只有通过它,jvm才能编译运行其它方法。
类方法
类方法是静态方法,方法前面余姚static修饰符来修饰,类方法内不能涉及有关变量的内容
类方法不能调用调用类的对象方法
类方法不能引用对象变量
类方法不能被重写或者覆盖
类方法不能使用super,this关键字。
类方法不需要对象访问,类名可以直接访问。
在java中,静态方法指被static修饰的成员方法。静态方法不需要通过它所属的类的任何实例就可以被调用,因此在静态方法中不能使用this关键字,也不能直接访问所属类的实例变量和实例方法,但是可以直接访问所属类的静态变量和静态方法。
实例方法
实例方法也叫做对象方法。
类方法是属于整个类的,而实例方法是属于类的某个对象的。
(1) 对象方法中可以引用对象变量,也可以引用类变量;
(2) 对象方法中可以调用类方法;
(3) 对象方法中可以使用super、this关键字。
在程序设计中,一些通用的、公用型的方法与类的对象无关,因此常常被作为类方法实现。如Java类库中Math类,其中多数的数学运算操作都被定义成静态方法。因此,可以使用类方法把一些通用的、公用型的方法放在合适的类中,从而很好地将它们组织起来。应用程序中的主方法main就是类方法。
构造方法
已经看到,当我们创建对象时,必须执行调用到 new 类名(),其实new后面的类名()也是一个方法,它是一个特殊的方法,我们把它称之为构造方法.但是马上有人就会发现,那为什么在我们的类中没有写这样一个方法呢,那是因为,当你没有手写构造方法,我们的java虚拟机会帮你创建一个空的构造方法,构造方法可以被重写调用。
构造方法名字与类名相同,它不会有返回值,可以有return但是不能返回一个值。
构造方法被重载后,jvm不在为程序自动生成该构造方法。
抽象方法和抽象类
抽象方法有abstract修饰符修饰
父类的方法本身不需要实现任何功能,仅仅定义方法签名,目的是让子类去实现它,可以定义为抽象方法
抽象方法所在的类一定是抽象类,抽象类不一定有抽象方法
接口方法
接口只提供方法名,底层实现代码是隐藏的。
实现结果:
附上源码:
public class Demo { //定义Demo类
static int num=1; //定义num属性并赋值为1
int num2 = 2;
public static void leiMethod(){ //类方法,静态方法,可以直接通过类名调用
System.out.println("这个一个类方法");
System.out.println(num);
//System.out.println(num2);//类方法也就是静态方法,不能调用非静态属性
}
public void trueMehtod(){ //实例方法,
System.out.println(num);
System.out.println(num2); //实例方法也就是对象方法,可以调用静态和非静态属性,但是需要对象来调用方法
System.out.println("这是一个实例方法");
}
public Demo(){
System.out.println("这个一个构造方法");
}
public static abstract class Father { //抽象类
public abstract void father(); //抽象方法,抽象的类和方法都没有方法体
}
public static class Son extends Father{ //一个类作为抽象类的子类要么为抽象类,或者重写父类的所有抽象方法
@Override
public void father() { //重写所有方法
System.out.println("这是抽象类的子类");
}
}
abstract class Son1 extends Father{ //抽象子类
}
public interface Jie{ //接口
/**
* 方法一
*/
public void out(); //只声明不实现
}
static class Jiekou implements Jie{ //继承接口
@Override
public void out() {
System.out.println("这是接口方法,继承实现接口");
}
}
public static void main(String[] args) { //main方法
System.out.println("main方法");
Demo.leiMethod();//调用类方法
Demo demo = new Demo(); //调用一次构造方法
demo.trueMehtod();//调用实例方法需要用对象来调用
Son son = new Son(); //创建抽象子类对象
son.father(); //对象调用方法
Jie j = new Jiekou(); //创建接口实现类对象
j.out(); //调用
}
}