java继承

前言

继承是java面向对象编程的基石,继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

一、继承的具体实现形式

public class Person {
	
	public void run() {
		System.out.println("任何人都可以跑。。。");
	}
     
     public static void main(String[] args) {
		
	} 
	
}

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

结论:
由以上代码我们可以看出:关键字extends表明正在构造的新类Student派生于一个已经存在的类Person,已存在的类称为超类或者父类;子类称为子类。我们还可以看出子类可以调用父类的方法,而且子类可以拥有自己的方法,功能比超类更丰富。
注意:(子类可以调用父类的方法,但是父类不能调用子类的方法)

二、方法重载与方法重写

方法重载

首先,看一句话
在这里插入图片描述
明确一个前提:是在一个类中,同名的方法,包含不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载。

public class Person {
	
	public void run() {
		System.out.println("任何人都可以跑。。。");
	}
	public void run(String name) {
		System.out.println("任何人都可以跑。。。");
	}
	public void run(int age) {
		System.out.println("任何人都可以跑。。。");
	}
	
     public static void main(String[] args) {
		
	}
}

方法重写

首先,重写是针对不同类而言的,其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。


public class Person {
	
	public void run() {
		System.out.println("任何人都可以跑。。。");
	}
	
     public static void main(String[] args) {
		
	}
}

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();
	}
	
}

方法覆盖:我们可以看到子类和父类当中都有run方法,而我们实际调用的却是子类自己的run方法,这就是方法的覆盖,子类通过重写和父类一样的方法实现方法的覆盖。

总结:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上三条出自:
感觉写得不错,可以看一下。
链接: https://blog.csdn.net/wintershii/article/details/80558739

三、super关键字

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

四、继承层次

值得注意的是java只支持单继承

public class Person {
	
	public void run() {
		System.out.println("任何人都可以跑。。。");
	}
	
	public static void main(String[] args) {
		
	}
	
}

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是单继承的。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值