版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
方法可以按本类中的方法和外部类中的方法分类;方法又可以按静态方法和非静态的一般方法分类,其中又包含类中继承方面的知识。而本文也是介于此分类方式来进行方法调用方式讨论的。
调用方式:直接使用方法名调用 例子:
1)继承于父类的静态方法:直接使用父类方法名调用
public class test extends a {
public static void main(String[] args) {
print();
}
}
class a {
public static void print() {
System.out.println("我是类型A的print方法!");
}
}
控制台输出:我是类型A的print方法!
2)子类的新方法:直接使用子类新方法调用
public class test extends a {
public static void print() {
System.out.println("我是类型B的print方法!");
}
public static void main(String[] args) {
print();
}
}
class a {
public static void print() {
System.out.println("我是类型A的print方法!");
}
}
控制台输出:我是类型B的print方法!
注意事项:父类中的静态方法是不能被重写的,子类中同名静态方法只能是新方法。换句话说,父类和子类中含有的其实是两个没有关系的方法,它们的行为也并不具有多态性。相关链接
调用方式:在非静态代码块直接调用,静态代码块需要构造对象调用。
1)继承于父类的一般方法:创建子类对象调用与直接调用
public class test extends a {
public static void main(String[] args) {//main方法是静态方法
test t = new test();
t.print();
}
public test(){//非静态方法可以直接使用方法名调用,例如构造方法
print();
}
}
class a {
public void print() {
System.out.println("我是类型A的print方法!");
}
}
控制台输出:我是类型A的print方法!
2)子类重写的方法:创建子类对象调用与直接调用
public class test extends a {
public void print(){
System.out.println("我是类型B的print方法!");
}
public static void main(String[] args) {
test t = new test();
t.print();
}
public test(){
print();
}
}
class a {
public void print() {
System.out.println("我是类型A的print方法!");
}
}
控制台输出:我是类型B的print方法!
3)子类的新方法:创建子类对象调用与直接调用
public class test extends a {
public void print2(){
System.out.println("我是类型B-2的print方法!");
}
public static void main(String[] args) {
test t = new test();
t.print2();
}
public test(){
print2();
}
}
class a {
public void print() {
System.out.println("我是类型A的print方法!");
}
}
控制台输出:我是类型B-2的print方法!
调用方式:使用 类名.方法 进行调用
public class test{
public static void main(String[] args) {
A.print();
}
}
class A {
public static void print() {
System.out.println("我是类型A的print方法!");
}
}
调用方式:用外部类构造的对象进行方法调用
public class test{
public static void main(String[] args) {
A a = new A();
a.print();
}
}
class A {
public static void print() {
System.out.println("我是类型A的print方法!");
}
}
wait()
方法,但要额外注意方法的异常处理,如下的非静态方法test01()
public class test{ public void test01(){ try { wait(100); } catch (InterruptedException e) { e.printStackTrace(); } } }