Java学习笔记之继承(1)

提到继承,大家可能第一时间会想到继承遗产,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())   // 正确,间接访问
	}
}

猜你喜欢

转载自blog.csdn.net/zuolixiangfisher/article/details/84858411