JAVA中的继承及其常见问题分析
1、JAVA中继承的定义
JAVA中,类的继承是通过扩展其他类而形成新类来实现的,原来的类称为父类(Super Class)或基类,新的类称为原来类的子类或派生类。在子类中,不仅包含了父类的属性和方法,还可以增加新的属性和方法,从而使得父类的基本特征可被所有子类对象共享。
注:类的继承并不改变类成员的访问权限,也就是说,如果父类的成员是公有的、被保护的或默认的,它的子类仍具有相应的这些特性。
/******************************************************************/
//类继承的定义格式
Class ChildClass extends FatherClass
//ChildClass类继承FatherClass ,ChildClass是子类,FatherClass是父类
{
//类的主体
}
/******************************************************************/
JAVA的继承规则:JAVA不支持多重继承,只允许一个类直接继承另一个类,即子类只能有一个父类,也就是说,extends关键字后面只能有一个类名。尽管一个类只能有一个直接的父类,但是它可以有多个间接的父类。
2、JAVA中常见问题
在继承中常遇到下图中的问题:
以下结合代码进行分析:
产生问题的代码如下:
public class Ooprogram { // 父类
public void say(){
System.out.println("我是父类!");
}
public class ChildOoprogram extends Ooprogram{ //子类继承父类
public void childsay(){
System.out.println("我是子类!");
}
}
public static void main(String [] args) {
Ooprogram father=new Ooprogram(); //创建父类
father.say(); //父类调用父类
ChildOoprogram child=new ChildOoprogram(); // 创建子类
child.say(); //子类调用父类
child.childsay(); //子类调用子类
}
}
正确的代码如下:
public class Ooprogram { // 父类
public void say(){
System.out.println("我是父类!");
}
public class ChildOoprogram extends Ooprogram{ //子类继承父类
public void childsay(){
System.out.println("我是子类!");
}
}
public static void main(String [] args) {
Ooprogram father=new Ooprogram(); //创建父类
father.say(); //父类调用父类
ChildOoprogram child=father.new ChildOoprogram(); // 创建子类
child.say(); //子类调用父类
child.childsay(); //子类调用子类
}
}
它们的区别在于:如何创建子类,即:
ChildOoprogram child=new ChildOoprogram(); // 创建子类
与
ChildOoprogram child=father.new ChildOoprogram(); // 创建子类