前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java-方法调用的各种分类和大总结

Java-方法调用的各种分类和大总结

作者头像
Fisherman渔夫
发布2019-07-31 14:59:48
1.6K0
发布2019-07-31 14:59:48
举报
文章被收录于专栏:渔夫渔夫
知识共享许可协议
知识共享许可协议

版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

背景:方法调用上的分类方式

方法可以按本类中的方法和外部类中的方法分类;方法又可以按静态方法和非静态的一般方法分类,其中又包含类中继承方面的知识。而本文也是介于此分类方式来进行方法调用方式讨论的。

一、调用本类中的方法

1. 本类方法为静态方法

调用方式:直接使用方法名调用 例子:

代码语言:javascript
复制
	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方法!

注意事项:父类中的静态方法是不能被重写的,子类中同名静态方法只能是新方法。换句话说,父类和子类中含有的其实是两个没有关系的方法,它们的行为也并不具有多态性。相关链接

2.本类方法为一般方法(无static修饰)

调用方式:在非静态代码块直接调用,静态代码块需要构造对象调用。

代码语言:javascript
复制
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方法!

二、调用外部的类的方法

1.调用外部类的静态方法

调用方式:使用 类名.方法 进行调用

代码语言:javascript
复制
public class test{
	public static void main(String[] args) {
    	A.print();
	}
}

class A {
	public  static void print() {
    	System.out.println("我是类型A的print方法!");
	}
}

2.调用外部类的一般方法

调用方式:用外部类构造的对象进行方法调用

代码语言:javascript
复制
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方法!");
	}
}

三、方法调用的注意事项

  1. 本类的静态方法(可以继承于父类)可以直接(不通过类名和对象调用)在子类的静态方法中调用,但是不能使用this.方法名。所以“在该类的内部调用该类的方法是可以不写类名的,默认了用this调用”这句话在很多回答中出现,但是这是不够严谨的,原因是其与this关键字不能在静态方法中调用相矛盾。不妨将其认为是JVM提供给程序员的编译器蜜糖。
  2. 任何类由于都继承了Object类,但是Object类中没有public修饰的静态方法。但是Object类中有native方法,其虽然不能放在子类的静态方法中,但是在子类的一般方法中可以直接通过方法调用,比如wait()方法,但要额外注意方法的异常处理,如下的非静态方法test01() public class test{ public void test01(){ try { wait(100); } catch (InterruptedException e) { e.printStackTrace(); } } }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年07月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景:方法调用上的分类方式
  • 一、调用本类中的方法
    • 1. 本类方法为静态方法
      • 2.本类方法为一般方法(无static修饰)
      • 二、调用外部的类的方法
        • 1.调用外部类的静态方法
          • 2.调用外部类的一般方法
          • 三、方法调用的注意事项
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档