• 继承


    class BaseAction {
        
        BaseAction(){
            System.out.println("父类,无参构造方法");
        }
        
        BaseAction(String name){
            System.out.println("父类,含一个参数的构造方法" + name);
        }
    }
    
    class UserAction extends BaseAction{
        
        UserAction(){
            System.out.println("子类,无参构造方法");
        }
        
        UserAction(String name){
            System.out.println("子类,含一个参数的构造方法" + name);
        }
        
    }
        
        public static void main(String[] args){
            UserAction u = new UserAction();
        }
        
    }

    运行结果:

    父类,无参构造方法
    子类,无参构造方法

        
        public static void main(String[] args){
            UserAction u = new UserAction("张三");
        }
        
    }

    运行结果:

    父类,无参构造方法
    子类,含一个参数的构造方法张三

        
        public static void main(String[] args){
            BaseAction m = new BaseAction();
        }
        
    }

    运行结果:

    父类,无参构造方法

        
        public static void main(String[] args){
            BaseAction m = new BaseAction("张三");
        }
        
    }

    运行结果:

    父类,含一个参数的构造方法张三

    总结:在实例化对象时,默认调用对象的无参构造方法,如果该对象继承了父类,会最先调用父类的无参构造方法。

    每个子类的构造方法中的第一行都有一句隐式的super()语句。

    在什么时候用继承?

    现在在InfoAction中有方法findAll()和getName(),但是在UserAction中也需要一个和InfoAction相同功能的findAll方法:

    
        public void findAll(){
            
        }
        
        public void getName(){
            
        }
    }
    
    class UserAction{
        
        public void findAll(){
            
        }
    }

    如果改为UserAction继承InfoAction似乎可以实现,这样UserAction具备了InfoAction所有的功能:

    
        public void findAll(){
            
        }
        
        public void getName(){
            
        }
    }
    
    class UserAction extends InfoAction{
        
        
    }

    但是UserAction只需要InfoAction中的findAll方法,这样我们可以继续向上抽取,UserAction和InfoAction出现一个共同的父类:

    class BaseAction {
        
        public void findAll(){
            
        }
    }
    
    class InfoAction extends BaseAction{
    
        public void getName(){
            
        }
    }
    
    class UserAction extends BaseAction{
        
        
    }
  • 相关阅读:
    mysql进阶
    浅谈数据库查询操作时的顺序
    Problem C Emergency Evacuation 一道思维题
    c++随机生成树
    洛谷 P4408 [NOI2003]逃学的小孩
    UVA11300 Spreading the Wealth
    洛谷 P3574 [POI2014]FAR-FarmCraft
    洛谷 P2882 [USACO07MAR]Face The Right Way G
    JSOI BZOJ4472 salesman
    CF 1912 A NEKO's Maze Game
  • 原文地址:https://www.cnblogs.com/guochang/p/9554184.html
Copyright © 2020-2023  润新知