美文网首页
二、Java初级--10、多态

二、Java初级--10、多态

作者: cybeyond | 来源:发表于2018-03-22 21:39 被阅读0次

    面向对象的三大特点:继承、封装、多态
    重载(overloading):一个类中有多个函数,且函数名相同,但每个函数包含的参数不一样
    重写(overriding):在父类中有一个函数,在子类中有一个相同名称的函数,也叫做覆盖。

    重载的概念,举例:


    结构
    package javastudy;
    
    public class T1 {
        public void print(String s){
            System.out.println(s);//重载,函数名相同,但参数不同
        }
        public void print(int i){
            System.out.println(i);
        }
    }
    
    package javastudy;
    
    public class Testit {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            T1 t=new T1();
            t.print("hello");
            t.print(100);//print被重载了2次
        }
    }
    

    重写的概念,举例:
    使用ctrl+shift+s,可以重写父类中的方法


    重写eat方法 结构

    Animal类

    package javastudy;
    
    public class Animal {
        public void eat(){
            System.out.println("动物吃什么呢?");
        }
    }
    
    

    Cat类

    package javastudy;
    
    public class Cat extends Animal {
    
        @Override
        public void eat() {
            // TODO Auto-generated method stub
    //      super.eat();
            System.out.println("猫吃小鱼!");
        }
        
    }
    
    

    Dog类

    package javastudy;
    
    public class Dog extends Animal {
    
        @Override
        public void eat() {
            // TODO Auto-generated method stub
    //      super.eat();  //super即父类的意思
            System.out.println("狗啃骨头!");
        }
    
    }
    
    

    Person类

    package javastudy;
    
    public class Person extends Animal {
    
        @Override
        public void eat() {
            // TODO Auto-generated method stub
            super.eat(); //调用父类中的eat()
        }
        
    
    }
    
    

    testit类

    package javastudy;
    
    public class Testit {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    //      T1 t=new T1();
    //      t.print("hello");
    //      t.print(100);
            Animal a1=new Animal(); //调用构造函数,没有就调用默认的构造函数
            Animal a2=new Dog();//可以用父类引用(地址)指向子类的对象;可以用父类的对象存放子类的引用
            Animal a3=new Cat();
            Animal a4=new Person();
            a1.eat();
            a2.eat();//如果子类中有重写,则调用子类的,没有重写,则调用父类的
            a3.eat();
            a4.eat();
            
            
        }
    }
    
    
    执行结果

    相关文章

      网友评论

          本文标题:二、Java初级--10、多态

          本文链接:https://www.haomeiwen.com/subject/kjrufftx.html