Java多态的概念和特点是什么

Java多态的概念和特点是什么

一、多态概念

继承关系使一个子类能继承父类的特征,并且附加一些新特征。子类是它的父类的特殊化,每个子类的实例都是其父类的实例,但是反过来不成立。例如:每个圆都是一个几何对象,但并非每个几何对象都是圆。因此,总可以将子类的实例传给需要父类型的参数。参考案例如下:

public class PolymorphismDemo{/** Main method */public static void main(String[] args){  displayObject(new Circle(1,"red",false));  displayObject(new Rectangle(1,1,"black",true));} public static void displayObject(GeometriicObject object){  System.out.println("Created on "+ object.getDateCreated()+".Color is"+object.getColor());}}

Created on Mon Mar 09 19:25:20 EDT 2011.Color is red

Created on Mon Mar 09 19:25:20 EDT 2011.Color is black

方法displayObject具有GeometriicObject类型的参数。可以通过传递任何一个GeometriicObject的实例来调用displayObject。使用父类对象的地方都可以使用子类的对象。这就是通常说的多态。简单来说,多态意味着父类型的变量可以引用子类型的对象

二、多态的特点

多态的前提:继承(即必须有子父类关系。)在使用多态后的父类引用变量调用方法时,会 调用子类重写后的方法。 定义格式:父类类型 变量名=new 子类类型(); 父类引用指向子类对象,如:Animal a = new Cat(); 多态中,编译看左边,运行看右边

三、instanceof操作符

instanceof是Java的关键字。Java关键字中的每个字母都是小写的。

为了更好地理解类型转换,可以认为它们类似于动物、北极熊、熊猫之间的关系,其中动物类Animal是北极熊类Polar bear和熊猫类Panda类的父类。北极熊是动物,所以,总是可以将 Polar bear的实例安全地赋值给Animal变量。该关键字用法是判断某个对象是否属于某种数据类型,返回值为布尔类型。

         Fu Zz=new Xu();        Fu Zzz=new yiting();        if(f1 instanceof Xu){            System.out.println("Zz是Xu的类型");        }        else{            System.out.println("Zzz是yiting的类型");        }

四、多态的转型

1、向上转型

总是可以将一个子类的实例转换为一个父类的变量,称为向上转换,因为子类的实例总是它的父类的实例。

作用:

减少一些重复的代码对象实例化的时候可以根据不同需求实例化不同的对象

package project2;	class Animal{		int num=100;		void say(){			System.out.println("It's an Animal.");		}	} 	class Cat extends Animal{		int num=50;		void say(){			System.out.println("It's a Cat.");		}			void bark(){			System.out.println("喵喵喵!");		}	} 	public class project2{		public static void main(String[] args) {			Animal cat=new Cat();//向上转型				System.out.println(cat.num);			cat.say();//			cat.bark();		}	}

运行结果:

100
It’s a Cat.

向上转型不要强制转型,父类引用指向的或者调用的方法是子类的方法,这个叫动态绑定。向上转型后父类引用不能调用子类自己的方法。

2、向下转型

把一个父类的实例转换为它的子类变量。必须使用转换标记(子类名)进行显示转换,向编译器表明你的意图。为使转换成功,必须确保要转换的对象是子类的一个实例。

作用:

向上转型时 ,会遗失子类对象独有的其他方法;可以通过向下转型再重新转回。

package project2;class Animal{	int num=100;	void say(){		System.out.println("It's an Animal.");	}} class Cat extends Animal{	int num=50;	void say(){		System.out.println("It's a Cat.");	}		void bark(){		System.out.println("喵喵喵!");	}} public class project2{	public static void main(String[] args) {		Animal cat=new Cat();//向上转型		Cat cat2=(Cat) cat;//向下转型		System.out.println(cat2.num);		cat2.say();		cat2.bark();	}}

运行结果:

50
It’s a Cat.
喵喵喵!

五、方法重写

提示:要重写一个方法,需要在子类中使用和父类一样的签名来对该方法进行定义。

子类从父类中继承方法。有时,子类需要修改父类中定义的方法的实现,这称为方法重写。

以下几点值得注意:

重写的方法必须与被重写的方法具有一样的签名,以及一样或者兼容的返回类型。兼容的含义是重写方法的返回类型可以是被重写方法的返回类型的子类型。仅当实例方法可访问时,它才能被重写。如果子类中定义的方法在父类中是私有的,那么这两个方法完全没有关系。与实例方法一样,静态方法也能被继承。但是,静态方法不能被重写。如果父类定义的静态方法在子类中被重新定义,那么在父类中定义的静态方法将被隐藏。可以使用语法“父类名.静态方法名”调用隐藏的静态方法。防止继承和重写

一个被final修饰的类和方法都不能被继承。被final修饰的数据域是一个常数。

有时候,可能希望防止类被继承。在这种情况下,使用final修饰符表明一个类是最终类,是不能作为父类的。Math类就是一个最终类。String、StringBuilder和StringBuffer类以及所有基本数据类型的包装类也都是最终类。例如,如下类A 就是最终类,不能被继承:

public final class A{  //Data fields,constructors, and methods omitted}

也可以定义一个方法为最终,最终方法不能被它的子类重写。例如如下,不能被重写:

public class Test {  //Data fields,constructors, and methods omitted   public final void m() {    // Do something }}

注:修饰符public、protected、private、static、abstract以及final可以用在类和类的成员上,只有final修饰符还可以用在方法中的局部变量上。方法内的final局部变量就是常量。

以上就是关于“Java多态的概念和特点是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

文章标题:Java多态的概念和特点是什么,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/22356

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云
上一篇 2022年9月1日 下午11:24
下一篇 2022年9月1日 下午11:25

相关推荐

  • 猫鼠服务器是什么公司

    猫鼠(Cats and Mouse)服务器可能是您要询问的一种服务器类型,或者是一个特定服务器名称的误解,但在知识库中并无明确的记录表示猫鼠服务器代表着一个具体的公司。如果您是在询问一个公司或品牌名为“猫鼠”的服务器供应商,可能需要提供更多信息或者具体的上下文才能得出准确答案。如果您实际上指的是一个…

    2024年4月25日
    8200
  • 推理服务器作用是什么

    摘要 推理服务器的作用是1、执行模型推理任务、2、优化推理性能、3、降低延迟、4、提高吞吐量、5、支持多种模型格式、6、提供模型管理与扩展功能。 在这些核心功能中,优化推理性能尤为关键,因为它直接关系到模型部署后的效率和稳定性。推理服务器通过使用专门的算法和硬件加速技术,大幅提高处理速度,同时保持高…

    2024年4月25日
    10500
  • 服务器管理的好处是什么

    摘要 服务器管理的好处包括: 1.提高安全性、2.增强性能、3.确保数据完整性、4.优化资源利用,等重要方面。特别是提高安全性,这是服务器管理中的关键部分,为防止未授权访问、数据泄露和其他潜在威胁,定期对服务器进行维护和更新至关重要。此外,安装安全软件、监控系统漏洞、及时打补丁和执行严格的访问控制策…

    2024年4月25日
    9000
  • 云服务器存储资料是什么

    摘要 云服务器存储资料是1、通过网络访问的远程服务器上存储的数据,其依赖于2、云计算技术,使得数据存取更加灵活和高效。在这两点中,通过网络访问的远程服务器存储意味着用户无需对物理硬件进行管理或投入高额的初期成本,而是通过互联网连接到远程数据中心,实现数据存储和管理。这种模式不仅降低了企业或个人的技术…

    2024年4月25日
    8600
  • 下挂的服务器叫什么

    摘要:下挂的服务器通常被称作1、边缘服务器或2、即服务外设。其中,边缘服务器主要用于提高网络服务的访问速度和提升用户体验。通过布局在接近最终用户的地理位置上,这种服务器能够缓存内容,减少数据传输的延迟,加快载入速度,有效缓解主服务器的负荷。边缘服务器尤其适用于内容交付网络(CDN)和大数据分析等场景…

    2024年4月25日
    10500
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部