Java基础知识(超详细解析,排版清晰!):Java继承
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java基础知识(超详细解析,排版清晰!):Java继承,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3461字,纯文字阅读大概需要5分钟。
内容图文
![Java基础知识(超详细解析,排版清晰!):Java继承](/upload/InfoBanner/zyjiaocheng/601/6df2b41008424e618caac7ac450be7bf.jpg)
Java中的继承是一种机制,表示为一个对象获取父对象的所有属性和行为。
在Java中继承是:可以创建基于现有类构建新的类。 当您从现有类继承时,就可以重复使用父类的方法和字段,也可以在继承的新类中添加新的方法和字段。
继承表示IS-A关系,也称为父子关系。
为什么在java中使用继承?
对于方法覆盖(因此可以实现运行时的多态性),提高代码可重用性。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写(覆盖)。
Java继承的语法
class Subclass-name extends Superclass-name
{
//methods and fields
}
Java
extends
关键字表示正在从现有类派生创建的新类。 “extends
”的含义是增加功能。在Java的术语中,继承的类称为父类或超类,新类称为子或子类。
Java继承示例
如上图所示,Programmer
是子类,Employee
是超类。 两个类之间的关系是Programmer IS-A Employee
. 它表示 Programmer
是一种 Employee
的类型。
参考下面示例代码的实现 -
class Employee {
float salary = 40000;
}
class Programmer extends Employee {
int bonus = 10000;
public static void main(String args[]) {
Programmer p = new Programmer();
System.out.println("Programmer salary is:" + p.salary);
System.out.println("Bonus of Programmer is:" + p.bonus);
}
}
Java
执行上面代码得到以下结果 -
Programmer salary is:40000.0
Bonus of programmer is:10000
Java
在上面的例子中,Programmer
对象可以访问自身类以及Employee
类的字段,即提高了代码可重用性。
java继承类型
在类的基础上,在java中可以有三种类型的继承:单一,多级和分层。在Java编程中,仅能通过接口支持多重和混合继承。稍后章节中我们将了解学习接口的应用。
注意:在java中的类不支持多继承。
当一个类扩展多个类,即被称为多重继承。 例如:
(1). 单一继承示例
文件 TestInheritance.java
中的代码如下 -
class Animal {
void eat() {
System.out.println("eating...");
}
}
class Dog extends Animal {
void bark() {
System.out.println("barking...");
}
}
class TestInheritance {
public static void main(String args[]) {
Dog d = new Dog();
d.bark();
d.eat();
}
}
Java
执行上面代码得到以下结果 -
barking...
eating...
Java
(2). 多级继承示例
文件 TestInheritance2.java
中的代码如下 -
class Animal {
void eat() {
System.out.println("eating...");
}
}
class Dog extends Animal {
void bark() {
System.out.println("barking...");
}
}
class BabyDog extends Dog {
void weep() {
System.out.println("weeping...");
}
}
class TestInheritance2 {
public static void main(String args[]) {
BabyDog d = new BabyDog();
d.weep();
d.bark();
d.eat();
}
}
Java
执行上面代码得到以下结果 -
weeping...
barking...
eating...
Java
(3). 多级继承示例
文件 TestInheritance3.java
中的代码如下 -
class Animal {
void eat() {
System.out.println("eating...");
}
}
class Dog extends Animal {
void bark() {
System.out.println("barking...");
}
}
class Cat extends Animal {
void meow() {
System.out.println("meowing...");
}
}
class TestInheritance3 {
public static void main(String args[]) {
Cat c = new Cat();
c.meow();
c.eat();
// c.bark();//C.T.Error
}
}
Java
执行上面代码得到以下结果 -
meowing...
eating...
Java
问题:为什么在Java中不支持多重继承?
为了降低复杂性并简化语言,Java中不支持多重继承。想象一个:A,B和C是三个类。 C类继承A和B类。 如果A和B类有相同的方法,并且从子类对象调用它,A或B类的调用方法会有歧义。
因为编译时错误比运行时错误好,如果继承2
个类,java会在编译时报告错误。 所以无论子类中是否有相同的方法,都会有报告编译时错误。例如下面的代码是编译出错的。
class A {
void msg() {
System.out.println("Hello");
}
}
class B {
void msg() {
System.out.println("Welcome");
}
}
class C extends A,B
{//suppose if it were
Public Static
void main(String args[]) {
C obj = new C();
obj.msg();// Now which msg() method would be invoked?
}
}
Java
内容总结
以上是互联网集市为您收集整理的Java基础知识(超详细解析,排版清晰!):Java继承全部内容,希望文章能够帮你解决Java基础知识(超详细解析,排版清晰!):Java继承所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。