zoukankan      html  css  js  c++  java
  • static关键字修饰后的父类方法不能被重写

       静态的方法可以被继承,但是不能重写。如果父类中有一个静态的方法,子类也有一个与其方法名,参数类型,参数个数都一样的方法,并且也有static关键字修饰,那么该子类的方法会把原来继承过来的父类的方法隐藏,而不是重写。通俗的讲就是父类的方法和子类的方法是两个没有关系的方法,具体调用哪一个方法是看是哪个对象的引用;这种父子类方法也不在存在多态的性质。

    Java不推荐用对象调用static方法,这会使人混淆,请大家注意。

    package august31.Test6;
    
    public abstract class Animal {
        String color;
            
        public Animal() {
            super();
        }
    
        public Animal(String color) {
            this.color = color;
        }
    
        public abstract void shut();
        //cry()方法不能重写
        public static void cry(){
            System.out.println("动物会流泪。");
        }
    }
    View Code
    package august31.Test6;
    
    public class Dog extends Animal{
        //必须要实现父类的抽象方法
        String name;
        
        public Dog() {
            super();
        }
    
        public Dog(String name,String color) {
            super(color);
            this.name = name;
        }
        
        public void shut() {
            System.out.println("汪汪汪");
        }
    
    }
    View Code
    package august31.Test6;
    
    public class Test6 {
    
        public static void main(String[] args) {
            //Animal animal = new Animal();//不能实例化对象
            
            Dog dog = new Dog("小黄","白色");
            dog.shut();
            dog.cry();
        }
    
    }
    View Code

      这也是为什么abstract修饰的method是不可同时是static的原因:

      abstract修饰方法,子类需要重写去实现,主要用于各个子类的实例对象; 
      static修饰方法,则方法不属于某个对象,属于class,可用class名.方法名(),进行调用;简单的说abstract实例对象; 而static属于类。 所以static方法不能是abstract方法

  • 相关阅读:
    意大利多洛米蒂 随手一拍都是大片
    改善恋爱关系的7个方法
    如何不花钱就能找到乐子
    蜜蜂会发现蜜没了吗?
    领导艺术:分权失败5宗罪
    如何正确地表白:勇敢不等于鲁莽
    现代社会奇葩家庭
    老板凭啥提拔你:如何得到老板赏识
    在科技行业谈待遇的四个技巧
    JS判断页面是否为浏览器当前页
  • 原文地址:https://www.cnblogs.com/mibin/p/7459435.html
Copyright © 2011-2022 走看看