继承的概念:
在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如猫和狗都属于动物,程序中便描述为猫和狗继承自动物,同理,哈巴狗和沙皮狗继承自狗,波斯猫和巴厘猫继承自猫,这些动物之间形成一个继承体系。
在java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称为子类,现有类称作父类,子类会自动拥有父类所有可继承的属性和方法。(所有可继承指的是被public和protect所修饰的成员变量和成员方法可继承,但被private所修饰的不可继承)。在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。
例如Example01:代码实现:
public class Example01{
public static void main(String[] args)
{
Dog dog = new Dog(); //创建一个Dog类的实例对象
dog.name = "哈巴狗"; //为Dog类的name属性赋值
dog.printName(); //调用Dog类的printName()方法
dog.shout(); //调用Dog类继承的shout()方法
}
}
class Animal{ //定义Animal类
String name; //定义name属性
void shout(){
System.out.println("动物发出叫声");
}
}
class Dog extends Animal{ //定义Dog类继承Animal类
public void printName(){
System.out.println("name = "+name);
}
}
/*
运行结果:
name = 哈巴狗
动物发出叫声
*/
在例Example01中,Dog类通过extends关键字继承了Animal类,这样Dog类便是Animal类的子类。
在类的继承中,需要注意一些问题:
- 在Java中,类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类。下面这个情况是不合法的:
class A{ }
class B{ }
class C extends A,B{ } //C类不可以直接继承A类和B类
2. 多个类可以继承一个父类,下面这个情况是允许的:
class A{ }
class B extends A{ }
class C extends A{ } //类B和类C都可以继承类A
3. 在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类。下面这个情况是允许的:
class A{ }
class B extends A{ } //类B继承类A
class C extends B{ } //类C继承类B
4. 在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时也可以是另一个类的子类。
class A{ }
class B extends A{ } //类B是类A的子类
class C extends B{ } //类C是类B的子类,同时类C也是类A的子类