java如何理解多态,简要概述多态的作用java
这篇文章给大家带来了一些关于java的知识,主要集中在对Java的多态理解上。继承关系使子类能够继承其父类的特性,并添加一些新特性。子类是其父类的专门化。子类的每个实例都是其父类的实例,但反之则不然。希望对你有帮助。
如何解决写爬虫IP受阻的问题?立即使用。
一、多态的概念
继承关系使子类能够继承其父类的特征,并附加一些新的特征。子类是其父类的专门化。子类的每个实例都是其父类的实例,但反之则不然。比如每个圆都是几何对象,但不是每个几何对象都是圆。因此,总是可以将子类的实例传递给需要父类型的参数。参考案例如下:
公共类多态演示{
/**主方法*/
公共静态void main(String[] args){
displayObject(new Circle(1, red ,false));
displayObject(新矩形(1,1,黑,真));
}
public static void display object(geometric iobject对象){
System.out.println(在 object.getDateCreated()上创建。Color是 object . getcolor());
}
}方法displayObject具有GeometriicObject类型的参数。可以通过传递GeometriicObject的任何实例来调用displayObject。在使用父类对象的地方,可以使用子类对象。这通常称为多态。。总之多态意味着父类型的变量可以引用子类型的对象。
二、多态的特点
多态性的前提:继承性(即必须有父子关系。)当使用多态父类引用变量调用方法时,将调用子类的被覆盖方法。定义:父类类型变量名=新子类类型();父类引用指向子类对象,比如Animal a=new Cat();多态,编译向左,运行向右。
三、instanceof操作符
instanceof是Java的关键字。Java关键字中的每个字母都是小写。
为了更好地理解类型转换,我们可以认为它们类似于动物、北极熊和熊猫之间的关系,其中动物是北极熊和熊猫的父母。北极熊是一种动物,因此将北极熊的实例赋给动物变量总是安全的。该关键字用法是判断某个对象是否属于某种数据类型,返回值为布尔值。
fu Zz=new Xu();
Fu Zzz=新一庭();
if(徐的f1实例){
System.out.println(Zz是徐的类型);
}
否则{
System.out.println(Zzz是yiting的类型);
}
四、多态的转型
1、向上转型
您总是可以将子类的实例转换为父类的变量,称为向上转换,因为子类的实例总是其父类的实例。
角色:
在实例化一些重复的代码对象时,可以根据不同的需求实例化不同的对象。
包项目2;
动物类{
int num=100
void say(){
System.out.println(是一种动物。);
}
}
类别猫扩展动物{
int num=50
void say(){
System.out.println(是只猫。);
}
虚空树皮(){
System.out.println(喵喵喵!);
}
}
公共类项目2{
公共静态void main(String[] args) {
动物猫=新猫();//向上转换
system . out . println(cat . num);
cat . say();
//cat . bark();
}
}运行结果:
不要强行向上转型。父类引用或调用的方法就是子类的方法。这称为动态绑定。向上转换后,父类引用不能调用子类自己的方法。
2、向下转型
将父类的实例转换为子类变量。您必须使用转换标记(子类名称)来显示转换,并向编译器表明您的意图。为使转换成功,您必须确保要转换的对象是子类的实例。
角色:
向上转换时,子类对象特有的其他方法会丢失;它可以向下转换,然后再转回来。
包项目2;
动物类{
int num=100
void say(){
System.out.println(是一种动物。);
}
}
类别猫扩展动物{
int num=50
void say(){
System.out.println(是只猫。);
}
虚空树皮(){
System.out.println(喵喵喵!);
}
}
公共类项目2{
公共静态void main(String[] args) {
动物猫=新猫();//向上转换
Cat cat2=(猫)猫;//向下转换
system . out . println(cat 2 . num);
cat 2 . say();
cat 2 . bark();
}
}运行结果:
五、方法重写
提示:要覆盖某个方法,必须在子类中定义该方法,并且该方法与父类具有相同的签名。
子类从父类继承方法。有时候,子类需要修改父类中定义的方法的实现,这叫做方法重写。
以下几点值得注意:
被重写的方法必须与被重写的方法具有相同的签名和相同或兼容的返回类型。Compatible意味着被重写方法的返回类型可以是被重写方法的返回类型的子类型。只有当实例方法可访问时,它才能被重写。如果子类中定义的方法在父类中是私有的,那么这两个方法彼此没有关系。像实例方法一样,静态方法也可以被继承。但是,静态方法不能被重写。如果父类定义的静态方法在子类中被重新定义,父类中定义的静态方法将被隐藏。您可以使用语法“父类名。静态方法名”来调用隐藏的静态方法。防止继承和重写
由final修饰的类和方法不能被继承。final修饰的数据字段是一个常量。
有时,您可能希望防止类被继承。在这种情况下,final修饰符用于指示一个类是最终的,不能用作父类。数学课是期末课。String、StringBuilder和StringBuffer类,以及所有基本数据类型的包装类也是final类。例如,下面的A类是最后一个类,不能被继承:
公开最终A级
//省略数据字段、构造函数和方法
}也可以将一个方法定义为final,final方法不能被它的子类覆盖。例如,它不能重写为:
公共类测试{
//省略数据字段、构造函数和方法
公共最终void m() {
//做点什么
}
}注意:修饰符public、protected、private、static、abstract和final可以用在类和类的成员上。只有final修饰符也可以用于方法中的局部变量。方法中的最后一个局部变量是一个常数。
六、小结
为了覆盖一个方法,有必要在子类中定义具有与其父类相同的签名、相同或兼容的返回类型的方法。方法只有在可访问时才能被重写。这样,私有方法就不能被重写,因为它不能在类本身之外被访问。如果子类中定义的方法在父类中是私有的,那么这两个方法就彼此无关。静态方法可以像实例方法一样继承。但是,静态方法不能被重写。如果父类中定义的静态方法在子类中被重新定义,父类中定义的方法将被隐藏。可以使用表达式obj instanceof AClass来测试一个对象是否是一个类的实例。可以使用final修饰符来指示类是最终的,不能被继承;它还可以指示一个方法是最终的,不能重写。
推荐:《java视频教程》是Java概念理解总结多态性的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。