访问修饰符以及方法的重写和覆盖

本文详细解释了Java中的访问修饰符(public,protected,default,private)及其作用,并介绍了方法重写规则,包括方法名称、参数列表、返回类型的一致性,以及重写方法的访问修饰符不能比父类严格。通过子类Dog和Cat对父类Animal的makeSound方法的重写示例,展示了如何调用父类和覆盖行为。
摘要由CSDN通过智能技术生成

在Java中,访问修饰符用于限制类、字段、方法等的访问范围。Java提供了四种访问修饰符,分别是 public(本类,同包,非同包子类,其他)protected(本类,同包,非同包子类)default(本类,同包)private(本类)

方法重写的规则:

  1. 子类中的方法必须与父类中被重写的方法有相同的方法名称、参数列表,返回类型与父类相同或父类返回类型的子类。
  2. 重写方法不能比父类方法拥有更严格的访问修饰符。例如,如果父类方法是 public,子类中的重写方法不能是 protectedprivate
  3. 重写方法后,优先调用子类重写后的类型。
  4. 重写方法调用父类的方法,通常使用 super 关键字。
    // 父类
    class Animal {
        public void makeSound() {
            System.out.println("Animal makes a sound");
        }
    }
    
    // 子类
    class Dog extends Animal {
        // 子类重写了父类的makeSound方法
        @Override
        public void makeSound() {
            System.out.println("Dog barks");
            super.makeSound(); // 调用父类的makeSound方法
        }
    }
    
    // 另一个子类
    class Cat extends Animal {
        // 子类重写了父类的makeSound方法
        @Override
        public void makeSound() {
            System.out.println("Cat meows");
            // 不调用父类的makeSound方法
        }
    }
    
    // 测试
    public class TestOverride {
        public static void main(String[] args) {
            Animal animal1 = new Dog();
            animal1.makeSound(); // 调用的是Dog类中重写的makeSound方法
    
            Animal animal2 = new Cat();
            animal2.makeSound(); // 调用的是Cat类中重写的makeSound方法
        }
    }
    

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值