子类继承父类

1.创建Father

package com.xinzhi;

public class Father {

    // 所有的类都会有一个顶级的父类,object
    // private仅支持本类
    // protected可在父子类之间调用

    private String hobby;

    public Father() {
        System.out.println("父亲被创建了");
    }

    public void smoke(){
        System.out.println("我爱抽中华!");
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }
}

2.创建Son,继承Father

package com.xinzhi;

public class Son extends Father {

    public void swim(){
        // 想让父亲也抽烟,父类也叫超类
        super.smoke();
        // 游泳前先抽根烟
        System.out.println("我的爱好是:" + getHobby());
    }

    /**
     * @Override  注解,当子类重写父类的方法时,要加这个
     */
    @Override
    public void smoke(){
        System.out.println("我爱抽红塔山");
    }
}

3.创建Test,调用son输出内容

package com.xinzhi;

public class Test {

    public static void main(String[] args) {
        // 子类重写调子类,子类不重写调父类
        Son son = new Son();
        son.swim();
        son.smoke();
        son.equals(son);
    }
}

 

### Java 子类继承父类的示例语法 在 Java 中,子类通过 `extends` 关键字继承父类。以下是关于子类继承父类的一些重要概念及其对应的示例代码。 #### 1. 基本继承结构 子类可以通过 `super()` 方法显式调用父类的构造函数,并传递必要的参数[^1]。如果没有显式的 `super()` 调用,默认会调用无参的父类构造函数。如果父类没有无参构造函数,则必须提供带参的 `super()` 调用来初始化父类实例。 ```java public class Parent { public Parent(String name) { System.out.println("Parent constructor called with name: " + name); } } public class Child extends Parent { public Child() { super("ChildName"); // 显式调用父类构造函数并传入参数 System.out.println("Child constructor called"); } } ``` #### 2. 多层继承 Java 支持多层继承,在这种情况下,子类不仅继承了直接父类的方法和属性,还可能间接继承更上一层祖先类的内容[^2]。例如: ```java class Grandparent { public void grandMethod() { System.out.println("Grandparent method invoked."); } } class Parent extends Grandparent { public void parentMethod() { System.out.println("Parent method invoked."); } } class Child extends Parent { public void childMethod() { System.out.println("Child method invoked."); } public static void main(String[] args) { Child c = new Child(); c.grandMethod(); // 可以访问祖类方法 c.parentMethod(); // 可以访问父类方法 c.childMethod(); // 访问自己的方法 } } ``` #### 3. 子类使用父类的依赖注入 在某些场景下,父类可能会持有某种依赖关系(如外部服务),而子类需要利用该依赖完成特定功能。此时可通过构造器或 setter 注入的方式共享依赖对象[^3]。 ```java class Dependency { public void performAction() { System.out.println("Dependency action performed."); } } class BaseClass { protected Dependency dependency; public BaseClass(Dependency dep) { this.dependency = dep; } public void useDependency() { if (dependency != null) { dependency.performAction(); } } } class SubClass extends BaseClass { public SubClass(Dependency dep) { super(dep); // 将依赖注入到基类中 } @Override public void useDependency() { System.out.println("SubClass using dependency..."); super.useDependency(); } } ``` #### 4. 子类访问父类成员变量 根据父类成员变量的访问控制权限(private, protected 或 public),子类可以选择不同的方式来操作它们。对于私有字段,通常需借助 getter 和 setter 方法;而对于受保护或者公开的字段,则可直接引用[^4]。 ```java class SuperClass { private String secret = "Secret Data"; protected int number = 42; public String getSecret() { return secret; } } class DerivedClass extends SuperClass { public void displayInfo() { System.out.println("Protected variable value: " + number); System.out.println("Private field via accessor: " + getSecret()); } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值