Java中的继承

继承

什么是继承

Java中提供了一个关键字extends,用这个关键字,可以让一个类和另一个类建立起父子关系。

java 复制代码
//父类
public class A {
	//公开成员
	public int i;
	public void print1() {
		System.out.print("print1")
	}
	//私有成员
	private int j;
	private void print2() {
		System.out.println("print2")
	}
}
java 复制代码
//子类
public class B extends A {
	// 子类可以继承父类的非私有成员
	public void print3() {
		System.out.println(i);
		print1();
	}
}

A类称为父类(基类或超类);

B类称为子类(派生类)

继承的特点

  • 子类能继承父类的非私有成员(成员变量、成员方法)

Java里的继承指的是能用的意思,子类继承父类非私有的成员意思是可以直接用父类非私有的成员。如:

A中的int iprint1()成员变量和方法都用public修饰(非私有),可以被子类B直接使用;

A中的int jprint2()成员变量和方法都用private修饰(私有的),不可以被子类B继承使用;

继承后对象的创建

  • 子类的对象是由子类、父类共同完成的。
    对象能访问什么变量是由子父类共同决定的

继承的好处与应用场景

  • 减少重复代码的编写

    如何优化?
    将这两个类的共同代码放到一个类里,让Teacher和Consultant都去继承。

继承相关注意事项

权限修饰符

用来限制类中的成员(成员变量、成员方法、构造器、代码块...)能够被访问的范围。

  1. public
  2. private
  3. protected
  4. 缺省

单继承、Object类

Java是单继承,只能继承一个父类,不支持多继承,但可以多层继承。

Object类是Java中所有类的祖宗,任何一个类其实都是Object的子类或子孙类。

方法重写

什么是方法重写

当子类觉得父类中的某个方法不好用,或者无法满足自己的需求时,子类可以重写一个方法名称、参数列表一样的方法,去覆盖父类的这个方法。

重写后,方法的访问,Java会遵循就近原则。

对象在调用方法时,就会调用B中的print函数,而不是A的

注意事项:

  • 重写小技巧:使用Override注解,他可以指定Java编译器,检查方法重写格式是否正确,代码可读性增强;
  • 子类重写父类方法时,访问权限必须大于或者等于父类该方法的权限(public>protected>缺省)
  • 重写的方法返回值类型,必须与被重写的方法的返回值类型一样,或者范围更小;
  • 私有方法、静态方法不能被重写,如果重写会报错的。

子类中访问其他成员的特点

1、在子类方法中访问其他成员(成员变量、成员方法),是依照就近原则的。

2、如果一定需要访问父类的成员,使用super关键字调用

子类构造器的特点

相关推荐
Scott9999HH4 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
腻害兔4 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社5 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海5 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖6 小时前
JDK 26 新特性详解
java·开发语言
马优晨7 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区8 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大9 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai9 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
维天说9 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json