Java第08章-继承

35 篇文章 1 订阅
本文详细介绍了Java中的继承概念,包括单继承、多继承和不同类继承同一个类的示例。通过实例展示了如何使用`extends`关键字创建子类,并讲解了父类和super关键字的使用,如调用父类构造器和访问父类成员。同时提供了People和Student类的代码示例,演示了继承的实际应用。
摘要由CSDN通过智能技术生成

目录

什么是继承?

继承分类

父类

super的使用


什么是继承?

        继承是面向对象最显著的特征之一。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

        比如可以先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。

继承分类

        继承是Java中实现代码重用的重要手段之一。Java中只支持单根继承,即一个类只能有一个直接父类,但可以间接继承多个类。

继承分为:单继承、多继承、不同类继承同一个类。

单继承:

 多继承:

 不同类继承同一个类:

 继承的语法规则:

        Java使用 “ extends ” 关键字为一个类指定父类,基本语法如下:

class 类名 extends 父类名{

        类体

}

父类

        父类也可成为超类(super class)或者基类(base class),派生出来的类成为子类或者派生类,子类可以继承父类的所有成员变量和方法。

        java中每个类有且只有一个父类,如果一个类没有明确的声明父类,那么这个类默认继承      “ java.lang.Object ” 类,Object类是所有类的公共祖先,即所有java类都是Object类的子孙类。

super的使用

调用父类的构造方法

        子类可以继承父类的所有成员变量和方法,但构造方法是不能被继承的。子类必须定义自己的构造方法,但是子类可以在自己的构造方法中使用super关键字调用父类的构造方法。

子类调用父类构造方法的语法是:super( ) 或者 super(参数列表);

super()表示调用父类的无参构造方法,而语句super(参数列表)表示调用与参数匹配的父类构造方法。super语句必须放在子类构造方法的第一行。

访问父类成员

        子类除了可以使用super语句调用父类构造方法以外,还可以使用super()访问类成员便来个和类方法。

基本语法如下:

        super.父类成员变量

        super.父类方法(实参列表)

父类:People

public class People {
	private String name;
	private int age;
	private String sex;
	
	public People() {
		//调用默认的父类,Object类的构造方法
		super();
	}

	public People(String name, int age, String sex) {
		//调用默认的父类,Object类的构造方法
		super();
		this.name = name;
		this.age = age;
		this.sex = sex;
	}

	//定义People类的get和set方法
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}
	
	public void print(){
		System.out.println("大家好,我是" + this.getName() + ",今年" + this.getAge() + "岁了," + "性别" + this.getSex());
	}
	
}

子类:Student

public class Student extends People{
	private int sutdentId;

	public Student() {
		//调用父类People中的无参构造方法
		super();
	}

	public Student(String name , int age , String sex ,int sutdentId) {
		//调用父类People中的有参构造方法
		super(name , age,sex);
		this.sutdentId = sutdentId;
	}
	//定义Student类的get和set方法
	public int getSutdentId() {
		return sutdentId;
	}

	public void setSutdentId(int sutdentId) {
		this.sutdentId = sutdentId;
	}
	
	public void printInOf(){
		//调用父类People中的成员方法
		super.print();
		System.out.println("学号:" + this.getSutdentId());
	}
	
}

测试类:StudentTest

public class StudentTest {
	public static void main(String[] args){
		System.out.println("---无参构造方法---");
		//创建Student类对象stu01;使用无参构造方法
		Student stu1 = new Student();
		//调用父类People成员变量赋值
		stu1.setName("张三");
		//调用父类People成员变量赋值
		stu1.setAge(20);
		//调用父类People成员变量赋值
		stu1.setSex("男");
		//调用子类Student成员变量赋值
		stu1.setSutdentId(10086);
		//调用子类Student中的成员方法
		stu1.printInOf();
		System.out.println();
		
		System.out.println("---有参构造方法---");
		//创建Student类对象stu02;使用有参构造方法
		Student stu2 = new Student("李四", 18, "男", 12315);
		//调用父类People中的成员方法
		stu2.print();
		//输出子类Student中的学号变量
		System.out.println("学号:" + stu2.getSutdentId());
	}
}

测试类运行结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值