本文概述
用Java继承是一种机制,一个对象获得所有父对象的属性和行为。这是一个重要的哦(面向对象编程系统)的一部分。
继承在Java背后的理念是,你可以创建新的类建立在现有类。当你从一个现有的类继承时,你可以重用父类的方法和字段。此外,你可以添加新的方法和字段在当前类也。
业代表的是一个关系也称为父子关系。
为什么在java中使用继承
- 方法的重写(因此可以实现运行时多态性)。
- 代码可重用性。
条款中使用继承
- 类:类是一组对象的共同属性。这是一个模板或创建对象的蓝图。
- 子类/子类:子类是一个类继承另一个类。它也被称为一个派生类,扩展类或子类。
- 超类/父类:超类是类的一个子类继承的特性。它也被称为基类或父类。
- 可重用性:如名称指定了可重用性是一种机制,使你更容易重用现有类的字段和方法当你创建一个新类。你可以使用相同的字段和方法已经在前面的类定义。
Java继承的语法
class Subclass-name extends Superclass-name
{
//methods and fields
}
扩展关键字表明你正在一个新类,它来源于现有类。“扩展”的意义是增加的功能。
在术语的Java类,这是遗传的叫做父母或超类,和新类称为孩子或子类。
Java继承的例子
作为显示在上面的图中,程序员是子类和员工是超类。两个类之间的关系是程序员是一个员工。这意味着程序员是一个类型的员工。
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);
}
}
Programmer salary is:40000.0
Bonus of programmer is:10000
在上面的例子中,程序员自己的类的对象可以访问字段,以及员工的类即代码可重用性。
在java类型的继承
类的基础上,可以有三种类型的继承java:单身,多层次、分级。
在java编程中,通过接口只支持多重继承和混合。稍后我们将了解接口。
注:不支持多重继承Java类。
当一个类继承多个类,它被称为多重继承。例如:
单继承的例子
文件: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();
}}
输出:
barking...
eating...
多级继承的例子
文件: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();
}}
输出:
weeping...
barking...
eating...
层次继承的例子
文件: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
}}
输出:
meowing...
eating...
问为什么java不支持多重继承?
降低复杂性和简化语言,用java不支持多重继承。
考虑这样一个场景,a,B,C三个类。C类继承了A和B类。如果A和B类的方法和你一样从子类对象调用它,会有歧义A或B类的调用方法。
由于编译时错误比运行时错误,Java编译时错误如果你继承2呈现类。所以你是否有相同或不同的方法,会有编译时错误。
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?
}
}
Compile Time Error
评论前必须登录!
注册