详述java的继承

  • 为什么要有继承

在我们编写程序的时候,写一个新的类时,有时候可能要用到一些之前使用过的方法或者属性,如果我们重新编写的话会很麻烦。但假如能够把某些需要重复使用的方法属性写入某个类,并被另一个类使用的话,就可以省下不少时间。于是为了提高代码的重用性,就有了继承。

  • 什么是继承

①继承是面向对象编程的三大特征之一,是一种基于已有类来创建新类的机制。由继承而得到的类称为子类(或派生类),被继承的类称为父类(或超类)。

Java中每个类只允许有一个父类。语法如下:class <子类> extends <父类>

例如:

 图中的Student类即是对Father类继承而得到,因此,Student为子类,Father为父类。

值得注意的是:使用继承语法的继承,我们称之为显式继承;与此对应,还有一种继承方式叫隐式继承——————任何一个没有显式继承某个类的类,都默认继承自Object类。所以我们可以说,Object类是所有类的直接父类或者间接父类

  • 继承作用的体现

我们说,继承的作用是提高代码的重用性,因为根据访问权限修饰符的不同,子类可以继承父类中某些成员变量和方法,提高了代码的重用性,子类也可以添加新的成员变量和方法 :

我们创建一个父类并写入属性以及方法


public class Father {
	String name="YJT";
	//属性:姓名YJT
	
	
	public void eat() {
		System.out.println("吃东西");
	}
	//方法:吃东西
}

接着我们创建子类继承这个父类


public class Student extends Father{
	public static void main(String[] args) {
		Student student = new Student();
		System.out.println(student.name);
		student.eat();
	}
}

在这个子类中并没有写入任何方法以及属性,但我们执行结果为

 这就说明子类继承了父类的方法和属性,显然在没有重新编写的情况下,父类的这段代码被子类重用,大大提高了代码的重用性,节省了时间和内存。

  • 注意事项

①如果类被final修饰,则该类不能被继承:

同时Java中已有的类(诸如VoidStringClassScannerSystem8种基本数据类型对应包装类等类)已经被final修饰,所以这些类不能被继承

②父类中被private修饰的方法和属性不能被继承。

在之前所用的代码中,我们将name属性和eat方法改用private修饰,会出现这种结果

程序报错:父类中的name和eat不可见。也就是说,name属性和eat方法由于改为private修饰,无法被子类继承。

如果父类拥有无参构造方法(无论隐式的还是显式的)且子类中的构造方法又没有明确指定调用父类的哪个构造方法,则子类中没有调用该子类其它构造方法的构造方法使用super()隐式调用父类的无参构造方法

 在这段代码中,父类有一个无参构造方法,子类的构造方法并没有指出调用的是该方法,也没有调用子类本身其他构造方法,此时则默认使用了super()隐式调用该无参方法,于是在执行程序时也输出了“父类中无参构造方法".

而在这段代码中,子类的第一个构造方法使用了this调用了其本类的无参构造函数,因此将不会默认用super()调用父类的无参函数,所以父类的无参构造方法只输出了一次。

 ④当子类成员变量和父类成员变量同名时,对子类对象来讲,父类的成员变量不能被子类继承(即子类的成员变量覆盖了父类的成员变量),此时称子类的成员变量隐藏了父类的成员变量。

如果要在子类非static修饰的代码块或方法中使用被隐藏的父类成员变量可以通过super关键字实现。

例如在这段代码中,子类和父类有一个同名变量“name”,在子类的sayname方法中,第一行直接输出name,而父类变量被隐藏,因此输出了子类的成员变量;而第二行中输出的name变量前加上了super关键字,调用了父类的同名成员变量,因此输出的是“王Father”。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值