派生 class 不需要某些父方法或属性
derived class not needing some of the parent methods or attributes
派生 class 不需要其父 class 的某些方法或属性是否可能且符合逻辑?
例如,
public class FinishedCourse extends Course{
...
}
FinishedCourse class 派生自 Course class,但 不需要 Course class[ 的某些方法或属性=12=]
这既不可能也不符合逻辑。
可能:否。创建子class时,它会继承父[=]的所有public(和受保护)属性50=]。 (它也继承了私有位,但它不能访问它们。)虽然你可以用抛出异常的东西覆盖一些方法来指示它不再相关(IllegalStateException
),subclass 将仍然有方法,在某些圈子里,这可能会被主观地视为糟糕的设计。 (在其他圈子里,主观上可能被认为是务实的。)
逻辑:不。subclass与其superclass有"is a"关系。您可以在任何需要 Course
的地方使用 FinishedCourse
,实际上使用该实例的代码可能不知道(或不关心)它正在处理 subclass 而不是 Course
.
相反,有几个选项:
你可以有一个基础 class 只实现 FinishedCourse
需要的东西(也许 BaseCourse
),并且有 FinishedCourse
和 Course
都 subclass 它。完成课程后,创建一个 FinishedCourse
实例来替换 Course
实例。
有一个 Course
只包含课程信息,另外有一个 CourseHandler
知道如何处理正在进行的课程的对象。
可能是其他几种解决方法中的任何一种。 :-)
Is it possible and logical that a derived class does not need some of
the methods or attributes of its parent class?
如果在 parent class 中定义了一个方法,通常它的子 class 应该有一些用例来使用它。
让 class 继承一个永远不会被使用的方法通常是一个设计问题,因为 API 不符合它的需要。
这使得class意图不明确且容易出错。
继承使用不当可能会出现这种设计
例如,当我们使用继承来制作继承方法而不是制作继承 class/concept.
现在,parent class 的方法被 subclass 覆盖是完全有效的,而且这个被覆盖的方法根本不依赖于 super method(parentclass的方法).
我不太清楚你想用这个做什么。但我认为这会为您解决问题。
public class Course{
private String course = "CS101";
}
public class FinishedCourse extends Course{
public void displayCourse(){
System.out.println(super.course); //compilation error.
//You cannot access private variables even if it is in direct parent class
}
}
派生 class 不需要其父 class 的某些方法或属性是否可能且符合逻辑?
例如,
public class FinishedCourse extends Course{
...
}
FinishedCourse class 派生自 Course class,但 不需要 Course class[ 的某些方法或属性=12=]
这既不可能也不符合逻辑。
可能:否。创建子class时,它会继承父[=]的所有public(和受保护)属性50=]。 (它也继承了私有位,但它不能访问它们。)虽然你可以用抛出异常的东西覆盖一些方法来指示它不再相关(IllegalStateException
),subclass 将仍然有方法,在某些圈子里,这可能会被主观地视为糟糕的设计。 (在其他圈子里,主观上可能被认为是务实的。)
逻辑:不。subclass与其superclass有"is a"关系。您可以在任何需要 Course
的地方使用 FinishedCourse
,实际上使用该实例的代码可能不知道(或不关心)它正在处理 subclass 而不是 Course
.
相反,有几个选项:
你可以有一个基础 class 只实现
FinishedCourse
需要的东西(也许BaseCourse
),并且有FinishedCourse
和Course
都 subclass 它。完成课程后,创建一个FinishedCourse
实例来替换Course
实例。有一个
Course
只包含课程信息,另外有一个CourseHandler
知道如何处理正在进行的课程的对象。可能是其他几种解决方法中的任何一种。 :-)
Is it possible and logical that a derived class does not need some of the methods or attributes of its parent class?
如果在 parent class 中定义了一个方法,通常它的子 class 应该有一些用例来使用它。
让 class 继承一个永远不会被使用的方法通常是一个设计问题,因为 API 不符合它的需要。
这使得class意图不明确且容易出错。
继承使用不当可能会出现这种设计
例如,当我们使用继承来制作继承方法而不是制作继承 class/concept.
现在,parent class 的方法被 subclass 覆盖是完全有效的,而且这个被覆盖的方法根本不依赖于 super method(parentclass的方法).
我不太清楚你想用这个做什么。但我认为这会为您解决问题。
public class Course{
private String course = "CS101";
}
public class FinishedCourse extends Course{
public void displayCourse(){
System.out.println(super.course); //compilation error.
//You cannot access private variables even if it is in direct parent class
}
}