1. 程式人生 > >返回型別是引用型別的幾種情況

返回型別是引用型別的幾種情況

/*
	返回值型別
		基本型別:(基本型別太簡單,我不準備講解)
		引用型別:
			類:返回的是該類的物件
			抽象類:返回的是該抽象類的子類物件
			介面:
*/
abstract class Person {
	public abstract void study();
}

class PersonDemo {
	public Person getPerson() {
		//Person p = new Student();
		//return p;
		
		return new Student();
	}
}

class Student extends Person {
	public void study() {
		System.out.println("Good Good Study,Day Day Up");
	}
}

class PersonTest2 {
	public static void main(String[] args) {
		//需求:我要測試Person類中的study()方法
		PersonDemo pd = new PersonDemo();
		Person p = pd.getPerson(); //new Student();  Person p = new Student(); 多型
		p.study();
	}
}
  /*
	形式引數:
		基本型別(太簡單,不是我今天要講解的)
		引用型別
			類名:(匿名物件的時候其實我們已經講過了) 需要的是該類的物件
			抽象類:
			介面
*/
class Student {
	public void study() {
		System.out.println("Good Good Study,Day Day Up");
	}
}

class StudentDemo {
	public void method(Student s) { //ss; ss = new Student();  Student s = new Student();
		s.study();
	}
}

class StudentTest {
	public static void main(String[] args) {
		//需求:我要測試Student類的study()方法
		Student s = new Student();
		s.study();
		System.out.println("----------------");
		
		//需求2:我要測試StudentDemo類中的method()方法
		StudentDemo sd = new StudentDemo();
		Student ss = new Student();
		sd.method(ss);
		System.out.println("----------------");
		
		//匿名物件用法
		new StudentDemo().method(new Student());
	}
}

/*
	返回值型別
		基本型別:(基本型別太簡單,我不準備講解)
		引用型別:
			類:返回的是該類的物件
			抽象類:
			介面:
*/
class Student {
	public void study() {
		System.out.println("Good Good Study,Day Day Up");
	}
}

class StudentDemo {
	public Student getStudent() {
		//Student s = new Student();
		//Student ss = s;
		
		//Student s = new Student();
		//return s;
		return new Student();
	}
}

class StudentTest2 {
	public static void main(String[] args) {
		//需求:我要使用Student類中的study()方法
		//但是,這一次我的要求是,不要直接建立Student的物件
		//讓你使用StudentDemo幫你建立物件
		StudentDemo sd = new StudentDemo();
		Student s = sd.getStudent(); //new Student(); Student s = new Student();
		s.study();
	}
}
/*
	形式引數:
		基本型別(太簡單,不是我今天要講解的)
		引用型別
			類名:(匿名物件的時候其實我們已經講過了)需要的是該類的物件
			抽象類:需要的是該抽象的類子類物件
			介面:需要的是該介面的實現類物件
*/
//定義一個愛好的介面
interface Love {
	public abstract void love();
}

class LoveDemo {
	public void method(Love l) { //l; l = new Teacher();  Love l = new Teacher(); 多型
		l.love();
	}
}

//定義具體類實現介面
class Teacher implements Love {
	public void love() {
		System.out.println("老師愛學生,愛Java,愛林青霞");
	}
}

class TeacherTest {
	public static void main(String[] args) {
		//需求:我要測試LoveDemo類中的love()方法
		LoveDemo ld = new LoveDemo();
		Love l = new Teacher();
		ld.method(l);
	}
}