目录
再创建一个子类Student类,使用extends关键字继承父类Person
我们使用代码来验证:使用static代码块进行辅助,可以清晰看到运行过程
1继承
1.1继承概述
继承是面向对象编程(OOP)中的一个核心概念,它允许一个类(称为子类或派生类)继承另一个类(称为基类或父类)的属性和方法。
继承中子类的特点:
继承属性:子类自动继承父类的所有属性,包括公有(public)、受保护(protected)和私有(private)属性。
继承方法:子类继承父类的所有方法,包括公有和受保护的方法。私有方法不会被继承,因为它们在父类中不可见。
方法重写:子类可以重写(Override)父类的方法,即使用相同的方法名和参数列表,但提供不同的实现。
扩展功能:子类可以添加新的方法和属性,以扩展或修改父类的行为。
下面是一个简单的继承例子:
首先创建一个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.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");
}
}
运行结果:
![](https://i-blog.csdnimg.cn/direct/54233221bc434e5c9abec8e4dfa1c741.png)
运行流程:
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中类支持多层继承