Java 继承(Inheritance)详解

继承是 Java 中面向对象编程(OOP)的核心概念之一。继承允许一个类(子类)继承另一个类(父类)的数据成员和属性。通过继承,子类可以重用父类的方法和数据成员,从而提高代码的复用性和可维护性。

继承基本组件

  1. 基类(父类)

    • 基类提供了数据成员和方法。任何需要方法或数据成员的基类都必须从其父类或基类中借用这些成员。
  2. 子类(子类)

    • 子类也称为子类。子类通过实现其父类的方法和数据成员来创建一个新的类。
  3. 关键字 extends

    • 子类必须包含关键字 extends 来继承父类。extends 关键字使编译器理解子类是从父类派生的,从而继承父类的功能和成员。

继承语法

class SubClass extends ParentClass {
   
   
    // Data Members
    // Methods
}

继承示例

假设三星公司想要制造一款新的洗衣机,并希望在电机中包含一个激活轻柔洗涤功能的方法。我们可以通过继承将这个方法引入到最新款的洗衣机中。

// Inheritance Example
package inheritance;

class Machine {
   
   
    protected String brand = "Samsung";
    public void wash() {
   
   
        System.out.println("Initiating Gentle-Wash Task");
    }
}

public class WashingMachine extends Machine {
   
   
    private String modelName = "Top Load Washing Machine";

    public static void main(String[] args) {
   
   
        WashingMachine washmachine = new WashingMachine();
        washmachine.wash();
        System.out.println(washmachine.brand + " - " + washmachine.modelName);
    }
}

为什么需要继承?

  1. 运行时多态

    • 运行时多态(也称为动态多态)是指在运行时方法调用会覆盖不同的方法。这使得子类可以重写父类的方法,实现多态性。
  2. 代码复用

    • 继承允许子类重用父类中定义的方法和数据成员,从而避免重复编写相同的代码,节省时间和精力。

访问修饰符

访问修饰符决定了父类的可用性。在实际编码中,我们不能让子类访问所有其他类。访问修饰符有四种:

  1. 默认(Default)

    • 默认访问修饰符是当用户没有为类指定任何特定访问修饰符时的默认选项。默认访问修饰符类似于 public 访问修饰符,但父类只能在当前使用的 Java 项目的包内访问,不能在包外访问。
    package Simplilearn;  
    class Parent {
         
          
        void msg() {
         
          System.out.println("Hello World"); } 
    } 
    
    package Simpli;  
    import Simplilearn.*; 
    class Child {
         
           
        public static void main(String args[]) {
         
           
            Parent P = new Parent();
            // Compile Time Error
            P.msg(); // Compile Time Error
        }
    }
    
  2. 公共(Public)

    • 公共访问修饰符用于当用户希望所有子类都能从任何地方(包括其他包)访问父类时。
    // Public
    package inheritance;
    public class Summation {
         
         
        public int add(int x, int y) {
         
         
            return x + y;
        }
    }
    
    package inheritance2;
    import inheritance.*;
    public class Child {
         
         
        public static void main(String args[]) {
         
         
            Summation A = new Summation();
            System.out.println(A.add(100, 200));
        }
    }
    
  3. 受保护(Protected)

    • 受保护访问修饰符允许子类访问父类的成员。如果需要从不同类访问受保护的数据成员和方法,只能通过访问受保护类的子类来实现。
    // Protected
    package inheritance;
    public class Parent {
         
         
        protected void Print() {
         
         
            System.out.println("Hello World");
        }
    }
    
    package inheritance2;
    import inheritance.*;
    public class Child extends Parent {
         
         
        public static void main(String args[]) {
         
         
            Child x = new Child();
            x.Print();
        }
    }
    
  4. 私有(Private)

    • 私有访问修饰符对访问私有数据成员和方法有严格的限制。私有访问修饰符只允许在类内部访问,不允许在类外部访问。
    // Private
    // Without Getter and Setter
    // This program will have Compile-time error
    package inheritance;
    class
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值