Java中的多态概念

Java中的多态概念文章目录Java中存在多态的前提条件多态中的成员访问特点多态中向上转型和向下转型Java中存在多态的前提条件要有继承关系要有方法重写要有父类引用指向子类对象多态中的成员访问特点成员变量:编译看左边(父类),运行看左边(父类)成员方法:编译看左边(父类),运行看右边(子类)静态方法:编译看左边(父类),运行看左边(父类)总结:只有非静态的成员方法,编译看左边,运行看右边…

大家好,欢迎来到IT知识分享网。

Java中存在多态的前提条件

  • 要有继承关系
  • 要有方法重写
  • 要有父类引用指向子类对象

多态中的成员访问特点

  1. 成员变量:编译看左边(父类),运行看左边(父类)
  2. 成员方法:编译看左边(父类) ,运行看右边(子类)
  3. 静态方法:编译看左边(父类) ,运行看左边(父类)

总结:只有非静态的成员方法,编译看左边,运行看右边

成员变量:

public class Tset01 { 
   
	
	public static void main(String[] args) { 
   
		/* * 多态中的成员变量 * 编译看左边,运行也看左边,与子类无关 */
		Father f1 = new Son();
		System.out.println(f1.num);
		
		Son f2 = new Son();
		System.out.println(f2.num);
		
	}
}

class Father{ 
   
	int num = 10;
}

class Son extends Father{ 
   
	int num = 20;
}

========================================
输出:
10
20

成员方法:

public class Tset01 { 
   
	
	public static void main(String[] args) { 
   
		/* * 多态中的成员方法特点: * 编译看左边,运行也看右边,与子类无关 * 此方法调用时,父类中一定要有say()方法,不然编译找不到 */
		Father f1 = new Son();
		f1.say();
		
	}
}

class Father{ 
   
	int num = 10;
	public void say() { 
   
		System.out.println("fffffff");
	}
}

class Son extends Father{ 
   
	int num = 20;
	public void say() { 
   
		System.out.println("sssssss");
	}
}

========================================
输出:
sssssss

静态方法

public class Tset01 { 
   
	
	public static void main(String[] args) { 
   
		/* * 多态中的静态方法特点: * 编译看左边,运行也看左边,与子类无关 * 虽然是通过对象来调用方法,其实内部还是通过类名来调用方法 Father.class() */
		Father f1 = new Son();
		f1.say();
		
	}
}

class Father{ 
   
	int num = 10;
	public static void say() { 
   
		System.out.println("fffffff");
	}
}

class Son extends Father{ 
   
	int num = 20;
	public static void say() { 
   
		System.out.println("sssssss");
	}
}

========================================
输出:
fffffff

多态中向上转型和向下转型

  • 向上转型:父类指向子类对象 Father f = new Son();

  • 向下转型:子类指向父类对象 Son s = (Son)f;

  • 向下转型,也就是子类指向父类时要注意:
    父类的真实指向的对象必须是子类对象,否则会有问题

//向下转型
Father f = new Son();//父类真实指向的是子类对象
Son s = (Son)f;

//错误的向下转型
Father f1 = new Father();//父类指向父类对象,向下转会有问题
Son s = (Son)f;

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/10975.html

(0)
上一篇 2024-03-27 11:15
下一篇 2024-03-27 12:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信