Java继承

本文详细解析了Java继承的概念,包括如何通过'extends'关键字实现子类继承父类特性,以及继承带来的代码复用优势。重点讲解了super关键字在调用父类构造器和方法的应用,以及子类构造器中父类构造器的调用规则。

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

1:什么是继承:

        从已经有的类派生出新的类,不同的类可能又共同的特性,所以把共同的特性放在一个类中,让其它类共享这个操作。

        继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为

2:继承的好处:

        提高代码复用,便于代码维护,提高实用性。

        子类从它的父类中继承可访问的数据域和方法,也可以添加新的数据域和新的方法。

3:关键字:extends

 4:继承类型:

java和c++不一样

c++支持继承多个类,java只支持继承一个类,但是可以多重继承

 5:继承的特性:

  • 子类拥有父类非 private 的属性、方法。

  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。

  • 子类可以用自己的方式实现父类的方法。

6:super和this关键字:

super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。

this:指向自己的引用

java 中若要在子类调用父类的方法,需使用关键字super。

super 表示使用它的类的父类。super 可用于:

  • 调用父类的构造方法;
  • 调用父类的方法(子类覆盖了父类的方法时);
  • 访问父类的数据域(可以这样用但没有必要这样用)。

7:构造器:

子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。

如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器。

调用父类的构造器:

        super(); 或者super(参数列表);

注意事项:

        要把父类的构造器放在第一行,先构造父类的

        如果子类调用无参构造,父类中只有有参构造,那么必须给父类加上一个无参构造:看样例:

       父类:

public class Persons{
	
	public String name;
	public Integer age;
	
	
	
	public Persons(String name, Integer age) {
		System.out.println("调用爸爸");
		this.name = name;
		this.age = age;
	}
	
	protected void show() {
		System.out.println("芝士baba");
	}

}

       子类:

public class Student extends Persons{

	private int id;
	
	
	public Student(int i) {
		super();
		this.id = i;
		System.out.println("调用儿子");
		super.show();
		
	}
	
//	public void show() {
//		System.out.println("芝士儿子");
//	}

}

测试类:

public class ExtendsTest {

	public ExtendsTest() {
		// TODO Auto-generated constructor stub
	}
	
	public static void main(String[] args) {
		Student a = new Student(20);
		//a.show();
	}

}

这时候测试类的new会报错:

The constructor Student(int) is undefined;

然后子类的super处会报错:

The constructor Persons() is undefined;

我们解决方法就是,创建一个Person的无参构造。

  • 子类的所有构造方法内部, 第一行会(隐式)自动先调用父类的无参构造函数super();
  • 如果子类构造方法第一行显式调用了父类构造方法,系统就不再调用无参的super()了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值