Java基础---继承

继承的基本作用是:代码的复用。默认所有的类都继承与Object类

一、概念:
继承是java面向对象编程的基石,继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
在这里插入图片描述

public class Person {
	
	public void run() {
		System.out.println("任何人都可以跑。。。");
	}
}

class Student extends Person{
	
	private void eat() {
		System.out.println("学生正在吃。。。。");
	}
	
	public static void main(String[] args) {
		Student student = new Student();
		student.run();
		student.eat();
	}
	
}

student.run(): student对象通过内存地址的调用,找到student实例,发现student实例当中没有run()方法,于是便去父类当中寻找,进而调用父类当中的run()方法。
student.eat():student对象通过内存地址的调用,找到student实例,发现student实例当中有eat()方法,直接调用。

二、super关键字
在这里插入图片描述
super 关键字有两个用途:一是调用超类的方法,二是调用超类的构造器。调用构造器语句的时候只能作为另一个构造器的第一条语句出现。

三、明确方法重载和方法重写
1.方法重载
在这里插入图片描述
在这里插入图片描述

//方法的重载
	public void getRun() {
		System.out.println("所有小猫都能跑。。。。");
	}
	
	//一个方法的签名是由方法名称以及参数列表所组成
	//方法的重载是指在一个类当中有相同的方法名不同的参数列表
	public void getRun(int s) {
		System.out.println("所有小猫都能跑。。。。"+s);
	}
	
	public static void main(String[] args) {
		Cat cat = new Cat();
		cat.getRun();
	}

2.方法重写
在有些时候,子类当中需要调用父类当中的方法,但是父类当中的方法对子类来说并不一定适用。这个时候我们就需要使用到方法的覆盖。例如

public class Person {
	
	public void run() {
		System.out.println("任何人都可以跑。。。");
	}
}

class Student extends Person{
	public void run() {
		System.out.println("这个学生在跑。。。");
	}
	
	private void eat() {
		System.out.println("学生正在吃。。。。");
	}
	
	public static void main(String[] args) {
		Student student = new Student();
		student.run();
		student.eat();
	}
	
}

student.run(): student对象通过内存地址的调用,找到student实例,发现student实例当中有run()方法,直接调用
在这里插入图片描述
重载和重写的区别
重载: 发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序
不同,方法返回值和访问修饰符可以不同,发生在编译时。
重写: 发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父
类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类
方法访问修饰符为 private 则子类就不能重写该方法。

四、继承层次
java只支持单继承,一个类只能继承一个类,不能同时继承多个类

继承并不限于一个层次。

public class Person {
	public void run() {
		System.out.println("任何人都可以跑。。。");
	}
}
class Student extends Person{
	public void run() {
		super.run();
		System.out.println("这个学生在跑。。。");
	}
	
	private void eat() {
		System.out.println("学生正在吃。。。。");
	}
	public static void main(String[] args) {
		Student student = new Student();
		student.run();
		student.eat();
	}
}
class XiaoMing extends Student{
}
class XiaoHong extends Student{
}

java虽然只支持单继承,但是一个类也可以间接继承其他类。由一个公共超类派生出来的所有类的集合被称为继承层次,在继承层次当中,从某个特定的类到其祖先的路径被称为继承链,但是一定要注意java是单继承的。

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值