java形式引數和返回值的深入研究

Tony-1fan發表於2020-12-01

1 形式引數

  • 基本型別:形參的改變不影響實際引數
  • 引用型別:
      類:需要的是該類的具體物件
      抽象類:需要的是該具體類的具體子類物件
      介面:需要的是該介面的具體實現類物件
class Student{
	public void study(){
		System.out.println("向錢看,向厚賺。");
	}
}
class StudentDemo{
	public void method(Student s){//Student s = new Student()
		s.study();
	}
}
class Demo{
	public static void main(String[] args){
		//我要使用Student中的study()方法
		Student s = new Student();
		s.study();
		System.out.println("-----------------------");
		//我要使用StudentDemo類中的method()方法
		//StudentDemo sd = new StudentDemo();

		//Student ss = new Student();
		//sd.method(ss);
		//sd.method(new Student());
		new StudentDemo().method(new Student());
		System.out.println("-----------------------");
	}
}
  1. 抽象類多型
abstract class Person{
	public abstract void study();
}
class PersonDemo{
	public void method(Person p){//Person p = new Stu()
		p.study();
	}
}
class Stu extends Person{
	public void study(){
		System.out.println("向錢看,向厚賺。買房,買車,娶媳婦。");
	}
}
class Demo{
	public static void main(String[] args){
		//我要使用PersonDemo類中的method()方法
		PersonDemo pd = new PersonDemo();
		Person p = new Stu();//抽象類多型
		//目前這個方法呼叫不了,因為抽象類無法例項化
		//抽象類可以依賴具體的子類實現例項化
		pd.method(p);
	}
}
  1. 介面多型
interface Inter{
	public abstract void hobby();
}
class InterDemo{
	public void method(Inter i){ // Inter i = new Stu();
		i.hobby();
	}
}
class Stu implements Inter{
	public void hobby(){
		System.out.println("向錢看,向厚賺");
	}
}
class Demo{
	public static void main(String[] args){
		// 使用InterDemo類中的method()方法
		InterDemo id = new InterDemo();
		Inter i = new Stu(); // 介面多型
		id.method(i);
	}
}

2 返回值

類:返回該類的具體物件
抽象類:返回該抽象類的具體子類物件
介面:返回該介面的具體實現類物件

class Stu{
	public void study(){
		System.out.println("向錢看,向厚賺");
	}
}
class StuDemo{
	public Stu get(){
		// Stu s = new Stu();
		// return s;
		return new Stu();
	}
}
class Demo{
	public static void main(String[] args){
		// 使用Stu類中的study方法
		// 要求不能直接建立Stu物件
		// 使用StuDemo獲取一個Stu物件
		StuDemo sd = new StuDemo();
		Stu s = sd.get();
		s.study();
	}
}
  1. 抽象類
abstract class Person{
	public abstract void study();
}
class PersonDemo{
	public Person get(){
		// Person p = new Tea();
		// return p;
		return new Tea();
	}
}
class Tea extends Person{
	public void study(){
		System.out.println("老師愛學習");
	}
}
class Demo1{
	public static void main(String[] args){
		PersonDemo pd = new PersonDemo();
		Person p = pd.get(); // new Tea();

		// 使用Person中的study方法
		// 使用PersonDemo中的get方法獲取一個person物件
		p.study();
	}
}

  1. 介面
interface Inter{
	public abstract void lover();
}
class InterDemo{
	public Inter get(){
		// Inter i = new Teacher();
		// return i;
		return new Teacher();
	}
}
class Teacher implements Inter{
	public void lover(){
		System.out.println("愛車,愛錢,愛美女。。。");
	}
}
class Demo2{
	public static void main(String[] args){
		InterDemo id = new InterDemo();
		Inter i = id.get();
		i.lover();
	}
}

相關文章