zoukankan      html  css  js  c++  java
  • java中的多态案例

    多态性实际上有两种:

      1.方法的多态性:

        1.1方法重载:相同的方法名,会根据传入的参数的类型和个数不同执行不同的方法

        1.2方法覆写:同一个方法名称,会根据子类的不同实现不同的功能

      2.对象的多态性:指的是发生在类的继承中,子类和父类之间相互转换

        1.1向上转型(自动完成):父类 父类对象 = 子类实例

        2.2向下转型:子类 子类对象 =(父类)父类实例;

    由于父类可以有多个子类,而一个子类所拥有的父类个数不会太多,向上转型不会出现编译错误,而向上转型有可能出现编译时候的错误

    class A{
    	public void print(){
    		System.out.println("A中的方法");
    	}
    }
    class B extends A{
    	public void print(){
    		System.out.println("B中的方法");
    	}
    }
    public class Test{
    	public static void main(String args[]){
    		A a =new A();
    		B b = (B) a;
    		b.print();
    	}
    }
    /*
    Exception in thread "main" java.lang.ClassCastException: A cannot be cast to B
            at Test.main(Test.java:14)
    */
    

    以上的代码出现了类转换的异常,指的是两个两个没有关系的类对象发生强制的向下转型所带来的异常,

    instanceof关键字的使用;该关键字主要是判断某个对象是否是一个类的实例:

    对象 instanceof 类//返回的是boolean
    
    class A{
        public void print(){
            System.out.println("A中的方法");
        }
    }
    class B extends A{
        public void print(){
            System.out.println("B中的方法");
        }
    }
    public class Test{
        public static void main(String args[]){
            A  a = new B();
            if(a instanceof B){
                B b = (B)b;
            }
            b.print();
        }
    }

    注意点:向下转型发生之前,一定要先发生对象的向上转型

      

    范例:向上转型实例

    class A{
        public void print(){
            System.out.println("A中的方法");
        }
    }
    class B extends A{
        public void print(){
            System.out.println("B中的方法");
        }
    }
    public class Test{
        public static void main(String args[]){
            A a = new B();//向上转型
            a.print();//B中的方法
        }
    }
  • 相关阅读:
    mysql命令大全(转发)
    算法大神学习之路
    MYSQL之explain的作用与相关知识
    FastDFS(分布式存储系统)+nginx web 服务器
    获取用户浏览历史记录(django_redis)
    用户登陆装饰器和页面跳转(包含mixin的使用)
    .NET 方法回调
    asp.net viewstate 数据过大 导致错误
    asp.net viewstate 数据大导致错误
    软件测试 Record
  • 原文地址:https://www.cnblogs.com/hu1056043921/p/7325951.html
Copyright © 2011-2022 走看看