小说网站 搜小说 无限网 烟雨红尘 小说爱好者 免费小说 免费小说网站

《java入门第一季》之面向对象(形式参数和返回值问题的深入研究2)

形式参数是引用类型   抽象类:

/*
	形式参数:
		引用类型
			抽象类:需要的是该抽象类的子类对象

*/
abstract class Person {
	public abstract void study();
}

class PersonDemo {
	public void method(Person p) {
		p.study();//如果形参是一个抽象类,则需要传递的实际参数应该是该抽象类的子类的对象。
	}
}

//定义一个具体的学生类
class Student extends Person {
	public void study() {
		System.out.println("Good Good Study,Day Day Up");
	}
}

class PersonTest {
	public static void main(String[] args) {

		//需求:(要使用PersonDemo类中的method()方法)
		PersonDemo pd = new PersonDemo();
Student s = new Student();
 pd.method(s);//传递的实际参数应该是该抽象类的子类的(对象)
		System.out.println("----------------");
		//方法三:使用多态也是可以的,只要保证队形是实现了抽象类的子类对象就可以了
		Person p = new Student();
		p.study();
		pd.method(p);
	}
}
返回值类型是引用类型  :   抽象类

/*
	返回值类型
		引用类型:
			抽象类:返回的是该抽象类的子类对象
*/
abstract class Person {
	public abstract void study();
}

class PersonDemo {
	public Person getPerson() {
		
		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()方法
		Person p1 = new Student();//多态的方式
		p1.study();
		System.out.println("----------------");
		Student s = new Student();//自己类对象方式
		s.study();
		System.out.println("----------------");
		
		PersonDemo pd = new PersonDemo();
		Person p = pd.getPerson(); //使用了返回值类型的方式,返回值类型是个person类型,所以用person接收。总体方式还是多态。
		p.study();
		System.out.println("----------------");
	}
}


posted on 2016-05-07 22:48  王小航  阅读(95)  评论(0编辑  收藏  举报

导航