JavaSE8基础 多态扩展性 父类引用作为函数参数,调用所装子类对象的重写方法

os :windows7 x64
    jdk:jdk-8u131-windows-x64
    ide:Eclipse Oxygen Release (4.7.0)
    
    
代码:

class Person {
	public void sayHello() {
		System.out.println("hello person");
	}
}

class Javaer extends Person{
	public void sayHello() {
		System.out.println("hello Javaer");
	}
}

class PHPer extends Person{
	public void sayHello() {
		System.out.println("hello PHPer");
	}
}

class PersonTool {
	private PersonTool(){}

	public static void sayHello(Person p) {
		p.sayHello();//多态代码扩展性的体现。
					 //因为子类中对父类的方法进行了重写。
					 //所以,在调用方法的时候调用过的是子类的方法。
	}
}

class Demo {
	public static void main(String[] agrs) {
		Javaer j = new Javaer();
		PersonTool.sayHello(j);

		PHPer p = new PHPer();
		PersonTool.sayHello(p);
	}
}

结果:



Java优秀,值得学习。
学习资源:itcast视频库。如果您有公开的资源,可以分享给我的话,用您的资源学习也可以。
博文是观看视频后,融入思考写成的。博文好,是老师讲得好。博文坏,是 给最苦 没认真。
如果您觉得博文有可以改进的地方,留言即可。

时间: 2024-11-08 19:19:49

JavaSE8基础 多态扩展性 父类引用作为函数参数,调用所装子类对象的重写方法的相关文章

JavaSE8基础 多态 强制转换 父引用转成子引用

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: class Father { } //Son继承了Father class Son extends Father{ //子类特有的方法 public void onlySon() { System.out.println("Son类特有的方法"); } } class Demo { public s

JavaSE8基础 多态 子类重写了父类的普通方法 父类引用调用子类中重写的方法

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: class Father { public int num = 1; public void sayHello() { System.out.println("hello"); } public static void staticFun() { System.out.println("s

JavaSE8基础 多态 子类没有重写 父类引用调用父类中的方法

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: class Father { public int num = 1; public void sayHello() { System.out.println("hello"); } public static void staticFun() { System.out.println("s

JavaSE8基础 多态 创建子类对象的时候,先对初始化父类

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: class TestFather { public TestFather() { System.out.println("TestFather"); } } class TestSon { public TestSon() { System.out.println("TestSon&quo

理解多态AND理解父类引用指向子类对象

假设现在有一个父类Father,它里面的变量需要占用1M内存.有一个它的子类Son,它里面的变量需要占用0.5M内存. 现在通过代码来看看内存的分配情况: Father f = new Father();//系统将分配1M内存. Son s = new Son();//系统将分配1.5M内存. 因为子类中有一个隐藏的引用super会指向父类实例,所以在实例化子类之前会先实例化一个父类,也就是说会先执行父类的构造函数. 由于s中包含了父类的实例,所以s可以调用父类的方法. Son s1 = s;/

将“引用”作为函数参数有哪些特点

(1)传递引用给函数与传递指针的效果是一样的.这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作. (2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作:而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本:如果传递的是对象,还将调用拷贝构造函数.因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好. (

C++中使用引用作为函数参数的优点

1.传递引用给函数与传递指针的效果是一样的.这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标 对象(在主调函数中)的操作. 2.使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作:而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的 副本:如果传递的是对象,还将调用拷贝构造函数.因此,当参数传递的数据较大时,用引用比 用一般变量传递参数的效率和所占空间都好.

[c++学习笔记]反汇编角度看变量名和引用作为函数参数

1:默认情况下即以变量名作为函数参数时进行值传递 从反汇编中可以看出以下几点: 1:默认情况下进行的是值传递(mov) 2: 函数调用中参数的传递是从右向左依次传递的 2:以引用传递参数实际上传递的是地址,不是变量 从反汇编中可以看出以下几点: 1:lea 取地址操作符,所以以引用作为参数时传递的是地址 2: 函数调用中参数的传递是从右向左依次传递的 版权声明:本文为博主原创文章,未经博主允许不得转载.

JavaSE8基础 String是特殊的引用类型,在函数的参数传递中只能把它当做 值类型来看待

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        code: package jizuiku2; public class Demo001 { public static void main(String[] args) { String str1 = "cnblog"; String str2 = "jizuiku"; System.