java 之方法(Methods)

  1. 方法(Methods)
    程序设计是为了使用程序的某些功能,帮助解决问题。在其他编程语言中,我们称Java的“方法”为子程序(Subroutine)/函数(Function)。
    1.1方法的定义
    java为面向对象语言,其方法与变量一样,每一种方法均有其所属的类对象,由类整合多个方法,组成一个具有特定功能的类对象。每一方法也可视为一个块。使用方法时注意其类对象属性,参数以及返回值规则,即

1.在类中,以声明(Declare)创建方法(Methods)。
2.若声明的方法不执行返回数据,则必须前置void;若要执行返回数据,则不得前置void。在内容中必须有return。简而言之,void与return不能同时存在。
3.使用方法(Methods)时,须先将所属类以new产生新对象,再运行新对象内的方法。
4.使用方法时,要注意调用程序与被调用程序间的参数,须保持一致性,即(a)参数类型要一致。若违反此类型规则,程序将无法运行。

class Study {
	int credit = 0;
	void addcredit(int i) {
		credit +=i;
	}
	int totalcredit() {
		return credit;
	}
}

public class Student {

	public static void main(String[] args) {
	Test a = new Test();
	Test b = new Test();
	a.addcredit(12);
	b.addcredit(9);
	b.addcredit(6);
	System.out.println("a.addcredit:"+a.totalcredit());//12
	System.out.println("b.addcredit:"+b.totalcredit());//15
	}

}

1.2实例方法(Intance Methods)
只有当方法所属类对象存在时,该方法才可被运行使用,这样随所属对象存在而存在的方法称为“实例方法”。

public class Number {
	int n=0;
	void addN(int i) {
		n=i;
	}
	int getN() {
		return n;
	}
}

public static void main(String[] args) {
		Number N;		//删除后报错
		N = new Number();//删除报错
		N.addN(10);
		System.out.println("使用方法 N.getN:"+N.getN());//10
	}
  1. 类方法(Class Methods)
    在方法声明时,前置"static"即可将该声明的方法一直保持存在,不必经过产生新对象的过程,可直接被运行,称为“类方法”。
public class Number {
	static int n=0;
	static void addN(int i) {
		n=i;
	}
	static int getN() {
		return n;
	}
}

public static void main(String[] args) {

		Number.addN(10);
		System.out.println(" N.getN:"+Number.getN());//10
		
		Number.n = 20;
		System.out.println("Number.n:"+Number.n);//20
	}

类方法和实例方法相比,可以不再new对象了,可以直接使用static中的变量。

  1. 构造函数(Constructor)
    类的构造函数特征有:

1.构造函数名称必须与所属类的名称相同。
2.构造函数是方法,与其他一般方法不同,无返回数据(无return),也无前置void。
3.构造函数在所属类产生新对象进行初始化运行。
4.在类中,如果没有构造函数,系统将会自动给予一个默认的隐藏空白构造函数(Default Constructor)。

public class Mynumber {
	int n;
	Mynumber(){
		n = 3;
		System.out.println("Here is Constructor and n="+n);
		}
	int getnumber() {
		return n;
}
}

public static void main(String[] args) {

		Mynumber a = new Mynumber();
		System.out.println("Here is main and a.getnumber()="+a.getnumber());//3
	}

4.方法重载(Method Overload)
类内有多个方法,名称相同,功能相同,但参数不同;参数的数据类型和数量不同。当类被调用运行时,参数类型与数量均符合的方法,自动出面接受运行,这样的对象称为“方法重载”。

public class adder {
	int add(int a,int b) {
		return a+b;
	}
	double add(double a, double b) {
		return a+b;
	}
	int add(int x, int y, int z) {
		return x+y+z;
	}
}

public static void main(String[] args) {
		int j;
		double k;
		int m;
		adder ad = new adder();
		j=ad.add(5, 7);
		k=ad.add(1.2, 1.32);
		m=ad.add(12, 12,52);
		System.out.println("j="+j);//12
		System.out.println("k="+k);//2.52
		System.out.println("m="+m);//76
	}
  1. 构造函数重载
public class adder {
	int c;
	double k;
	adder(int a,int b) {
		c=a+b;
		System.out.println("int c="+c);
	}
	adder(double a, double b) {
		k=a+b;
		System.out.println("double k="+k);
	}
}

public static void main(String[] args) {
		adder add_int = new adder(2,3);//5
		adder add_double = new adder(13.2,2.3);//15.5
	}
  1. public/private修饰符(Modifications)
    在类内声明变量(Variables)或方法(Methods)均可前置修饰符public和private,以限制其使用环境与时机。

1.当变量(Variables)和方法(Methods)前置修饰符public时,即为公共变量或公共方法,其他类对象均可运行调用。
2.当变量和方法前置修饰符private时,即为私有变量或私有方法,只允许自身类对象内的方法使用,其他类对象不得运行调用。
3.当无任何前置修饰符时,是默认设置(Default),允许在同一包(package)内运行调用,在不同包内,则无法调用。另外修饰符protected也有相同的功能。

6.1 无前置修饰(Default Modifications)

class Number {
	int number;
}

public class Lab {

	public static void main(String[] args) {
	Number i = new Number();
	i.number=10;
	System.out.printf("i.n=%d",i.number);//i.number=10
	}
}

注:当变量、方法无任何前置修饰符时,为默认设置(Default),仅允许在同一包(package)内被运行调用,在不同包内 不能使用。
6.2前置修饰符public

public class Number {
		public int N;
}


import text_two.Number;
public class Lab {

	public static void main(String[] args) {
	Number i = new Number();
	i.N=10;
	System.out.printf("i.N=%d",i.N);//i.N=10
	}
}

不同包中必须导包:格式:import <包名>.<类名>;并且被导包的类必须是前置public,如果是在同一包下,则只需要变量前置public关键字。
6.3 当变量、方法前置修饰符private时,只允许自身类对象内的方法使用,其他类对象不得调用。

class Study {
	private int credit = 0;
	public void addcredit(int i) {
		credit +=i;
	}
	public int totalcredit() {
		return credit;
	}
}

public class Lab {

	public static void main(String[] args) {
	Study joe = new Study();
	Study george = new Study();
	joe.addcredit(12);
	george.addcredit(9);
	joe.addcredit(6);
	george.addcredit(3);
	System.out.println("joe studied:"+joe.totalcredit()+"credites");//joe studied:18credites
	System.out.println("george studied:"+george.totalcredit()+"credites");//george studied:12credites
	}
}

  1. this 关键字
    当一个构造函数以this()调用另一个重载构造函数时,this()必须放在该构造函数的第一行。
    7.1类
    在一个复杂的类中,为了简化程序设计,增加程序可读性,将this用于方法内,其意义为所属类对象的关键字。
class Mynumber {
	private int n;
	public void setnumber(int i) {
		this.n=i;
	}

	public int getnumber() {
		return n;
	}
	
}

public class Lab {

	public static void main(String[] args) {
	Mynumber M = new Mynumber();
	M.setnumber(10);
	System.out.println("My.getnumber:"+M.getnumber());
	}
}
发布了19 篇原创文章 · 获赞 2 · 访问量 1099

猜你喜欢

转载自blog.csdn.net/qq_42692319/article/details/102642803