• 多态


    
    

    多态的含义是:对外一种表现形式,内在有多种具体实现。

    Java中多态的具体体现 方法重载 方法覆盖 多态参数。

    例如

    package com.zr.duotai.text;

    import java.util.Date;
    public class Feed implements f{
     public void hava(){
            System.out.println(A+B+C);    
        };
        public static void main (String [] args){
            Person p=new Person();
            Dog88 d=new Dog88();
            p.feed(d);
            Cat88 c=new Cat88();
            p.feed(c);
         Feed l=new Feed();  
         l.hava();
         //Date date=new Date();
         Date date1 = new Date();
         long t = date1.getTime();
         Date date = new Date(t);
        //用t实例化一个date对象
         System.out.println(date);//输出时间 
        }
        void setTime(){
            
        }
    }
    class Animal88{
        int aa=12;
        void eat(){
            System.out.println("yibanshiwu");
        }
        }
        
    
    class Dog88 extends Animal {
         static int aa=22;
        void eat(){
            System.out.println("狗吃骨头,是大事");
        }    
    }
    class Cat88 extends Animal{
        int aa=32;
        void eat(){
            System.out.println("猫吃鱼,是小事");
        }
    }
    class Person{
        void feed(Animal animal){  //参数多态
            System.out.println();
            animal.eat();    
        }
    }
    interface h{
        int A=22;
    }
    interface c{
        int B=22;
    }
    interface d{
        int C=22;
    }
    interface f extends h,c,d{
        abstract  void hava();
    }
    多态实质:编译期与运行期不同。
    当编译器类型是父类,运行期类型是子类时,被称为父类引用指向子类对象
    class  Animal{
                   …… 
    }
    class Cat  extends Animal{
                   ……
    }
    class Dog extends Animal {
                   ……
    }
    Cat m = new Cat() 
    Animal x = new Cat()  //Animal 的引用指向Cat的对象
    在继承关系中变量不存在多态,变量是子类隐藏了父类变量。多态一般都发生在方法的重载(方法不能用static修饰)。
    向上转型
    class Animal{
         abstract void eat();
    }
    class Cat extends Animal{
          void look() {
        System.out.println("看家");
         }
        }      
     ………
       Animal x=new Cat()  //向上造型,Cat对象提升到Animal对象
       x.eat()   //只能使用父类中的方法
       x.look()  //报错!不能使用子类中的方法
    
    

    向下造型

    class Animal{
         abstract void eat();
    }
    class Cat extendsAnimal{
          void look() {
            System.out.println("看家");
            }
        }      
     ………
    Animal x=new Cat()
    Cat  m=(Cat)x;  //向下转型
       m.eat() ;
       m.look();//子父类中的方法都可以使用
    
    
    
    
    
     
  • 相关阅读:
    3.4 抓取猫眼电影排行
    2.5 代理的基本原理
    第二章 爬虫基础
    1.8 爬虫框架的安装
    Python序列化
    CVE-2020-1938 Apache-Tomcat-Ajp漏洞复现
    Python定制类
    Apache Tomcat DDOS
    内网端口转发工具
    内网渗透思路简单介绍
  • 原文地址:https://www.cnblogs.com/fy02223y/p/7152242.html
Copyright © 2020-2023  润新知