Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在特定条件下扩展类?_Java_If Statement_Subclass_Superclass - Fatal编程技术网

Java 如何在特定条件下扩展类?

Java 如何在特定条件下扩展类?,java,if-statement,subclass,superclass,Java,If Statement,Subclass,Superclass,如何使类X在特定条件下扩展类Y?就像我有一个超级类的人,有一个属性年龄,另一个类称为成人,如果年龄在12到20岁之间,成人类扩展人?如果不可能,您有其他选择吗?我已尝试使用HAS-A关系和运行时多态性来实现您的要求 在下面的示例中,Age是一个父类,包含所有年龄组的更通用属性 不同的年龄组分为几个班。这些类包含特定于年龄的代码或属性,并将扩展ageclass。例如Young和Elder班级 class Age { // Generalized code for Age class }

如何使类X在特定条件下扩展类Y?就像我有一个超级类的人,有一个属性年龄,另一个类称为成人,如果年龄在12到20岁之间,成人类扩展人?如果不可能,您有其他选择吗?

我已尝试使用
HAS-A
关系和运行时多态性来实现您的要求

在下面的示例中,
Age
是一个父类,包含所有年龄组的更通用属性

不同的年龄组分为几个班。这些类包含特定于年龄的代码或属性,并将扩展
age
class。例如
Young
Elder
班级

class Age {
    // Generalized code for Age class
}

class Young extends Age {
    // more specific code of Young class
}

class Elder extends Age {
    // Elder class specific code
}

public class test {
    Age age ; 
    int ageValue ;

    public Age returnVal(int ageValue){
        if (ageValue < 20) {
            age = new Young();
        } else { 
            age = new Elder();
        }

        // age object you get will be according to ageValue.
        return age;
    }
}
班级年龄{
//年龄组别通用代码
}
年轻的阶级会延长年龄{
//更具体的青年班守则
}
班长延长年龄{
//长者类别特定代码
}
公开课考试{
年龄;
智力价值;
公共年龄返回值(int ageValue){
如果(年龄值<20){
年龄=新青年();
}否则{
年龄=新长者();
}
//您得到的年龄对象将根据年龄值。
回归年龄;
}
}

returnVal()
方法将根据
ageValue

返回
Young
类或
Elder
类的对象。您可以使用返回布尔值的
实例方法定义
Person
类,
true
当且仅当
人员
实例至少有
12岁
时。至少对我来说,这似乎更简单。

类继承是一个编译时概念。另一种选择是工厂模式: