Person p=new student()是什么意思

记住:父类引用子类对象
Student t = new Student();
实例化一个Student的对象,这个不难理解。但当我这样定义时:
Person p = new Student();

这代表什么意思呢?

很简单,它表示我定义了一个Person类型的引用,指向新建的Student类型的对象。由于Student是继承自它的父类Person,所以Personl类型的引用是可以指向Student类型的对象的。那么这样做有什么意义呢?因为子类是对父类的一个改进和扩充,所以一般子类在功能上较父类更强大,属性较父类更独特。

定义一个父类类型的引用指向个子类的对象既可以使用子类强大的功能,又可以抽取父类的共性。 

package com.hyg.base;

public class StudentTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student st = new Student( );
		System.out.println(st. getInfo());
		System.out.println("-------------------");
		Person1 p = new Student();
		System.out.println(p.getInfo());
	}

}


class Person1{
	protected String name = "张三";
	protected int age;
	public String getInfo() {
		return "Name:"+name+"\nage:"+age;
	}
}
class Student extends Person1 {
	protected String name = "李四";
	private String school = "New Oriental";
	public String getSchool() {
		return school;
	}
	public String getInfo() {
		return super.getInfo() + "\nschool: " + school;
	}
}

另外:

package com.hyg.base;

public class PrivateMethodDemo {

	public static void main(String[] args) {
		
		//继承
				Koo koo =new Foo();
				koo.test2();
				System.out.println("------");
				
				Foo foo = new Foo();
				foo.test2();
				System.out.println("------");
				
				Koo koo1 = new Koo();
				koo1.test2(); 
	}
}
	class Koo{
		public void test2() {
			a();
			b();
		}
		private void a() {
			System.out.println("Call Koo a()");
		}
		public void b() {
			System.out.println("Call Koo b()");
		}
	}
	class Foo extends Koo{
		public void a() {
			System.out.println("Call Foo a()");
		}
		public void b() {
			System.out.println("Call Foo b()");
		}
	}

 如果父类方法apublic类型

package com.hyg.base;

public class PrivateMethodDemo {

	public static void main(String[] args) {
		
		//继承
				Koo koo =new Foo();
				koo.test2();
				System.out.println("------");
				
				Foo foo = new Foo();
				foo.test2();
				System.out.println("------");
				
				Koo koo1 = new Koo();
				koo1.test2(); 
	}
}
	class Koo{
		public void test2() {
			a();
			b();
		}
		public void a() {
			System.out.println("Call Koo a()");
		}
		public void b() {
			System.out.println("Call Koo b()");
		}
	}
	class Foo extends Koo{
		public void a() {
			System.out.println("Call Foo a()");
		}
		public void b() {
			System.out.println("Call Foo b()");
		}
	}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值