• 重写的理解


    // 重写我理解的全名是重写父类的方法(父类的静态方法也是可以被继承的)
    public class OOP {
        public static void main(String[] args) {
            Student3 stu = new Student3();
            // 父类指向子类对象(其实就是子类的new类型是父类)
            Personer stu2 = new Student3();
            // 静态方法
            stu.read(); // 我要重写父类 ====> 子类重写的静态方法 (当子类没有重写父类的静态方法时,就会去调用父类的静态方法)
            stu2.read(); // 我在读  =====> 父类的静态方法
            // 非静态方法时继承
            stu.fn();  // 我是子类的普通方法 =====> 子类重写的方法
            stu2.fn();  // 我是子类的普通方法 =====> 子类重写的方法
        
    // 父名--父名 说明当子类没有与父类同名的属性时用父类的,子类有和父类同名的属性需要看类类型是父类就用父类的属性,子类就用子类的属性
    System.out.println(stu.name + "--" + stu2.name);
        }
    }
    // Personer的子类Student3 
    class Student3 extends Personer{ 
        // 如果父类待重写的方法是静态的,那么子类同名必须为静态的
        public static void read(){
            System.out.println("我要重写父类");
        }
        public void fn(){
            System.out.println("我是子类的普通方法");
        }
    }
    // Personer类
    class Personer{
        String name = “父名”;
    
        public Personer() {
            System.out.println("我调用了父类的构造函数吗");
        }
        public static void read(){
            System.out.println("我在读");
        }
        public void fn(){
            System.out.println("我是父类的普通方法");
        }
    }

     总结: 静态方法根据对象的类类型决定调用父的还是子的;非静态:重写了都调用子类的,没重写都调用父类的

    重写的一些注意点 ☆

    重写是针对继承来说的,所以重写要保证返回值、参数、方法名相同缺一不可,不然就不叫重写
    重写的方法要比基类被重写的方法访问权限要高,这是里氏代换原则规定的(LSP);
      public class Computer {
        // 权限是default
        int fn(int a){
            this.call();
            System.out.println("我是普通方法");
            return 6;
        }
    }
    public class Lenovo extends Computer {
        private int fn(int a){
            this.call();
            System.out.println("我是联想中的普通方法");
            return 6;
        }
    }
    
    
    
    public class MyClass {
        public static void main(String[] args) {
            Computer c = new Hongqi();
            c.fn(4); // 这里就有问题了,因为私有方法不能被外部类调用,为了防止以前能调用重写后就不能调用的这种错误,直接从设计上java就规避了
        }
    }
    你的努力有资格到拼天赋的程度吗?
  • 相关阅读:
    expect简介和使用例子(转)
    openshift网络
    openstack相关
    SDN的开源方案sonic
    OpenStack Neutron ML2 Deep Dive
    2017双11技术揭秘—阿里数据库计算存储分离与离在线混布
    es的gui工具
    django orm中blank和null的区别
    断关联多表关系阐述
    视图使用
  • 原文地址:https://www.cnblogs.com/wchjdnh/p/14403416.html
Copyright © 2020-2023  润新知