Java之继承和方法覆盖

本文介绍了Java中的继承概念,包括代码复用、单继承、继承的术语以及继承时的数据继承规则。此外,还详细讨论了方法覆盖,即方法重写,包括其使用场景、构成条件、与方法重载的区别,以及重写时需要注意的访问权限和异常处理规定。

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

一、继承
1、继承是面向对象三大特征之一,三大特征分别是:封装、继承、多态
2、继承"基本"的作用是:代码复用,但是继承最重要的作用是:有了继承才有了"方法的覆盖"和"多态机制"
3、继承语法格式:
[修饰符列表] class 类名 extends 父类名{
类体 = 属性 + 方法
}
4、java语言当中的继承只支持单继承,一个类不能同时继承很多类,只能继承一个类
5、关于继承中的一些术语:
B类继承A类,其中:
A类称为:父类、基类、superclass
B类称为:子类、派生类、subclass
6、在java语言当中子类继承父类都继承哪些数据呢?
1)私有的不支持继承
2)构造方法不支持继承
3)其他数据都可以被继承
7、虽然java语言当中只支持单继承,但是一个类可以间接继承其他类。例如:
C extends B{

}
B extends A{

}
A extends T{

}
C类直接继承B类,但是C类间接继承A类、T类。

8、java语言当中假设一个类没有显示的继承任何类,该类默认继承JavaSE库当中提供的java.lang.Object类。
java语言当中任何一个类中都有Object类的特征。

public class Account {
	private String account;
	private double balance;

	public Account() {
	}

	public Account(String account, double balance) {
		this.account = account;
		this.balance = balance;
	}

	public String getAccount() {
		return account;
	}

	public void setAccount(String account) {
		this.account = account;
	}

	public double getBalance() {
		return balance;
	}

	public void setBalance(double balance) {
		this.balance = balance;
	}
}

public class CreditAccount extends Account{

	private double credit_degree;

	public CreditAccount() {

	}

	public double getCredit_degree() {
		return credit_degree;
	}

	public void setCredit_degree(double credit_degree) {
		this.credit_degree = credit_degree;
	}
}
public class InheritTest {

	public static void main(String[] args) {
		InheritTest it = new InheritTest();
		String s = it.toString();//此处可以调用toString方法,InheritTest类中有toString方法,从Object类中继承过来的
		System.out.println(s);//Test.InheritTest@3b6eb2ec
		CreditAccount credit = new CreditAccount();
		credit.setAccount("1234");
		credit.setBalance(2346.6);
		credit.setCredit_degree(10000);

		System.out.println(credit.getAccount()+","+credit.getBalance()+","+credit.getCredit_degree());
	}
}

二、方法的覆盖

方法的重载
1、方法重载又称为overload
2、什么时候使用方法重载?
当在同一个类当中,方法完成的功能是相似的,建议方法名相同,这样方便程序员的编程,
就像在调用一个方法似的,代码美观。
3、构成方法重载的条件:
1)在同一个类当中
2)方法名相同
3)参数列表不同:类型、顺序、个数
4、方法重载和什么无关?
1)和方法的返回值类型无关
2)和方法的修饰符列表无关
方法的覆盖:
1、方法覆盖又被称为方法重写,英语单词:override/overwrite
2、什么时候使用方法重写?
当父类中的方法已经无法满足当前子类的任务需求,
子类有必要将父类中继承过来的方法进行重新编写,
这个重新编写的过程称为方法重写/方法覆盖。
3、什么条件满足之后方法会发生重写呢?【代码满足什么条件之后,就构成方法的覆盖呢?】
1)方法重写发生在具有继承关系的父子类之间
2)方法重写的时候:返回值类型相同,方法名相同,形参列表相同
3)方法重写的时候:访问权限不能更低,可以更高
4)方法重写的时候:抛出异常不能更多,可以更少
4、注意:
私有方法不能继承,所以不能覆盖
构造方法不能继承,所以不能覆盖
静态方法不存在覆盖
覆盖只针对方法,不谈属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值