JAVA基础——继承

目录

1继承

1.1继承概述

下面是一个简单的继承例子:

首先创建一个Person类,作为父类

再创建一个子类Student类,使用extends关键字继承父类Person

创建一个测试类Test

1.2继承的优缺点

1.3继承变量访问特点

接着上面例子修改一下

父类不变

子类添加一个ShowAge方法

使用测试类进行测试

1.4.继承中构造访问特点

举一个例子

我们使用代码来验证:使用static代码块进行辅助,可以清晰看到运行过程

 运行结果

 运行流程

1.5.继承注意事项 


1继承

1.1继承概述

继承是面向对象编程(OOP)中的一个核心概念,它允许一个类(称为子类或派生类)继承另一个类(称为基类或父类)的属性和方法。

继承中子类的特点:

  1. 继承属性:子类自动继承父类的所有属性,包括公有(public)、受保护(protected)和私有(private)属性。

  2. 继承方法:子类继承父类的所有方法,包括公有和受保护的方法。私有方法不会被继承,因为它们在父类中不可见。

  3. 方法重写:子类可以重写(Override)父类的方法,即使用相同的方法名和参数列表,但提供不同的实现。

  4. 扩展功能:子类可以添加新的方法和属性,以扩展或修改父类的行为。

下面是一个简单的继承例子:


首先创建一个Person类,作为父类
public class Person {
    public String name = "张三";
    public int age = 18;
    public char sex = '男';
    public void run(){
        System.out.println("人会跑");
    }

}
再创建一个子类Student类,使用extends关键字继承父类Person
 
public class Student extends Person{
}
创建一个测试类Test
 
public class Test {
    public static void main(String[] args) {
        Student student = new Student();
        System.out.println(student.age);
        System.out.println(student.name);
        System.out.println(student.sex);
        student.run();
    }
}

 

一个简单例子验证了子类可以继承父类的属性和方法


1.2继承的优缺点

优点:

  1. 代码重用:继承允许子类继承父类的属性和方法,减少了代码的重复编写,提高了开发效率。

  2. 层次结构:通过继承,可以构建清晰的类层次结构,使得代码更加模块化和易于管理。

  3. 多态性:继承支持多态性,允许使用统一的接口处理不同类型的对象,增加了程序的灵活性。

  4. 扩展性:子类可以扩展或修改父类的行为,适应不同的应用场景。

缺点:

        类的耦合性增强了,当父类发生变化时子类实现也不得不跟看变化,削弱了子类的独立性

1.3继承变量访问特点

在子类方法中访问一个变量

最先在子类局部范围找,如果没有就在子类成员范围找,最后在父类成员范围找,如果都没有就报错.

接着上面例子修改一下


父类不变
public class Person {
    public String name = "张三";
    public int age = 18;
    public char sex = '男';
    public void run(){
        System.out.println("人会跑");
    }

}
子类添加一个ShowAge方法
public class Student extends Person{
    public int age = 20;
    public void ShowAge(){
        int age = 30;
        System.out.println(age);
    }
}
使用测试类进行测试
public class Test {
    public static void main(String[] args) {
        Student student = new Student();
        student.ShowAge();
    }
}

 
 

1.4.继承中构造访问特点
 

因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化

举一个例子

我们使用代码来验证:
使用static代码块进行辅助,可以清晰看到运行过程
public class Test extends Base{
    static {
        System.out.println("test static");
    }
    public Test(){
        System.out.println("test constructor");
    }
    public static void main(String[] args) {
        new Test();
    }


}
class Base{
    static {
        System.out.println("base static");
    }
    public Base(){
        System.out.println("base constructor");
    }

}
 运行结果:



运行流程:
 
1.程序执行先找main()方法启动程序
2.首先去扫描Test类,返回Test类有父类Base类,再去扫描父类,发现Base没有父类
2.将Base.class加载进方法区,此时Base类当中static执行
4.将Test.class加载进方法区,此时Test类当中static执行
5.main方法入栈,执行new Test();创建Test类
6.创建子类对象之前创建父类对象。所以先执行Base()构造器,在执行Test构造器

1.5.继承注意事项 

Java中类只支持单继承,不支持多继承。Java中类支持多层继承

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值