Java继承(extends )

本文深入解析Java中的继承机制,探讨其如何减少代码冗余并增强代码的可维护性和复用性。文章详细介绍了继承的基本概念、语法格式以及单继承、多重继承的特点,同时提供了实例演示如何使用继承以及方法的重写。

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

撰写时间:2019年04月17日

继承是Java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子对象(实例)具有父类的实例域和方法,
或子类从父类继承方法,使得子类具有父类相同的行为。
继承格式:
在Java中通过extends关键字申明一个类继承与另外一个类,一般格式如下:

class 父类 {
}
class 子类 extends 父类 {
}

为什么需要用继承?在正常的情况下,我们编写代码,是会出现代码重复的,这就会导
致后果代码量大且臃肿,而且维护性不高。所以要解决这个代码问题就需要用到继承,
将相同代码部分提取出来组成一个父类,后面需要用到就直接继承父类用需要的那部分。
这样维护性也提高了,代码也简洁,提高代码的复用性。
注意:Java不支持多继承,但支持多重继承
单继承:A<——B

class classA{
}
class classB extendsclassA{	
}

多重继承:A<——B<——C 间接继承

class classA{
}
class classB extends classA{	
}
class classC extends classB{	
}

不同类继承同一个类:A<——B,A<——C

class classA{
}
class classB extends classA{	
}
class classC extends classA{	
}

不支持多继承

class classA{
}
class classB{	
}
class classC extends classA,B{	
}

注意:这个多继承是不支持的。
简单示例:
简单的继承

public class ExtendsDemo1 {
 	public static void main(String[] args) {
    	BaseClassB baseClassB=new BaseClassB();
    	System.out.println(baseClassB.intA);
    	baseClassB.print();
    }
}

class BaseClassA{
	int intA=100;
	public void print() {
		System.out.println("-----BaseClassA----");
	}
}
class BaseClassB extends BaseClassA{
	
}

在这里插入图片描述
这里可以看到,在BaseClassB里面是什么都没写的,而上面实例化的就是
BaseClassB,而且还输出intA跟print(),而这两个都是BaseClassA的东西,
这就是用到了关键字extends 让BaseClassB从BaseClassA继承到了变量和方
法,然后BaseClassB就可以调用它们。
ExtendsDemo2 原代码数据

public class ExtendsDemo2 {
		public ExtendsDemo2() {
			System.out.println("ExtendsDemo2 构造器");
		}
		int weight=0;
		//private 成员变量
		private int intPrivate=10;	
		//-方法
		public void fly() {
			System.out.println("它是猪,它可以飞");		
		}	
		public void eatting() {
			System.out.println("....吃....蕉啦");
		}	
		public static void print() {
			System.out.println("print");
		} 
}

输出ExtendsDemo2

public class Demo1 {
		public static void main(String[] args) {
		ExtendsDemo2 extendsDemo2=new ExtendsDemo2();
		extendsDemo2.weight=9;
		System.out.println(extendsDemo2.weight);
		extendsDemo2.fly();
		extendsDemo2.eatting();		
		}
}

在这里插入图片描述
多重继承
ExtendsDemo3 继承ExtendsDemo2 ,ExtendsDemo3 没有自己的变量、方法

public class ExtendsDemo3 extends ExtendsDemo2{

}

然后ExtendsDemo4再来继承ExtendsDemo3 ,这时候ExtendsDemo4就通过了
ExtendsDemo3 继承到了ExtendsDemo2的变量方法。

public class ExtendsDemo4 extends ExtendsDemo3 {
    int a = 0;
    public ExtendsDemo4() {
    	this.a = 10;
    	System.out.println("Ostrch 构造器");
    }
	// 重写fly方法
	public void fly() {
		super.fly();// (1)重写了父类的方法又想调用父类的方法就是用super
		System.out.println("虽然它是猪,但它不会飞");
		privateMethod();
	}
	public static void print() {
		System.out.println("Ostrch print");
	}
	private void privateMethod() {
		System.out.println("privateMethod");
	}
}

可以对ExtendsDemo2的方法进行重写,重写是子类对父类的允许访问的方法的实现过
程进行重新编写, 返回值和形参都不能改变。 它的好处就是子类可以根据自己的需要,
定义特定于自己的行为。 也就是说子类能够根据 需要实现父类的方法。重写方法不能
抛出新的检查异常,或比被重写方法更加宽泛的异常。

public class Demo1 {
		public static void main(String[] args) {
			ExtendsDemo4 extendsDemo4=new ExtendsDemo4();
			extendsDemo4.weight=50;
		
			System.out.println(extendsDemo4.weight);
			extendsDemo4.fly();
			extendsDemo4.eatting();
		
			ExtendsDemo3.print();
			ExtendsDemo4.print();//静态要大写		
		}
}

ExtendsDemo4 多重继承ExtendsDemo2 的方法flu(),将它重写输出。在这里插入图片描述
任何一个类都是有父类的,哪怕没写继承,都有一个公共的父类,哪怕间接继承,都是
从object类继承下来,任何类直接或间接继承object类,object是根类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值