Java学习笔记之继承(1)

本文深入讲解Java中的继承机制,包括类的继承格式、继承的限制以及访问限制等内容。通过实例展示了子类如何继承父类的属性和方法,揭示了继承在Java编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提到继承,大家可能第一时间会想到继承遗产,Java里的继承虽然不是继承钱,但是也和继承遗产有相似之处。
继承遗产一般是说子女辈获得了父辈留下的钱财、物品等,java里的继承是指子类获得了和父类一样的属性。

1、类的继承格式
  • class 父类 {} \quad \quad\quad \quad \quad \quad // 定义父类
  • class 子类 extends 父类{} \quad // 使用extends关键字继承父类
class Person{
    private String name;
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

class Student extends Person {  // 子类继承父类
    private String school;		// 声明新的属性 
    public void setSchool(String school){
        this.school = school;
    }

    public String getSchool(){
        return school;
    }
}

public class FirstJavaDemo {
    public static void main(String[] args) {
        Student stu = new Student();	// 实例化子类对象
        stu.setName("张三");
        stu.setAge(18);
        stu.setSchool("NKU");
        System.out.println("姓名:" + stu.getName() + " 年龄:" + " 学校:" + stu.getSchool());
    }
}

在这里插入图片描述

2、继承的限制

子类和父类的关系,可以映射到孩子与父亲的关系,正常来说,一个孩子只可能有一个亲生父亲,但是父亲可以有多个孩子,也就是说子类只能继承一个父类,但是父类却可以被多个子类继承

class A {
	// 各种代码
}
class B extends A{
	// 各种代码
}

class C extends A{
	// 各种代码
}

另外虽然不允许多重继承,但是允许多层继承,也就是说孩子可以继承父亲,父亲继承爷爷

class A {  // 爷爷
	// 各种代码
}
class B extends A{  // 父亲继承爷爷
	// 各种代码
}

class C extends B{	// 儿子继承父亲
	// 各种代码
}
3、访问限制

使用继承的时候,子类不能直接访问父类的私有成员,但是可以调用父类的非私有方法。
在这里插入图片描述

class Person{
    private String name;
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

class Student extends Person {
    public void fun(){
		System.out.println("父类的姓名:" + name) // 错误,不能直接访问私有属性
		System.out.println("父类的年龄:" + age)  // 错误,原因同上
	}
}

子类不能直接访问父类的私有成员,但是可以通过getter方法间接来访问,

class Person{
    private String name;
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

class Student extends Person {
    public void fun(){
		System.out.println("父类的姓名:" + getName())  // 正确,间接访问
		System.out.println("父类的年龄:" + getAge())   // 正确,间接访问
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值