interface IFaculty{
void admin();
}
class ITFac implements IFaculty{
@Override
public void admin() {
System.out.println("IT Fac Admin");
}
}
class MedFac implements IFaculty{
@Override
public void admin(){
System.out.println("Med Fac Admin");
}
}
class University{
public void adminFaculty(IFaculty iFaculty){
iFaculty.admin();
}
}
代码:
public class Main {
public static void main(String[] args) {
University u1 = new University();
u1.adminFaculty(); // cannot call this method without passing parameters
}
}
但是我不能在不传递相关参数的情况下调用该方法:iFaculty的一个对象。但我不能这么做。有人知道如何从main方法调用adminaulfly()吗?或者以任何方式调用adminafully(),并运行代码以给出相应的输出。?
谢谢你。
从您的问题来看,我假设您希望能够调用adminafully()
,并且始终使用相同的教程。为此,不要将教程传递给方法,而是在Univerisity
中保留一个引用。您还可以添加默认的教员。
class University {
private IFaculty faculty;
//default configuration of the university: it has a medical faculty
public University() {
this(new MedFac());
}
//allows to create a university with another faculty type
public University( IFaculty faculty) {
this.faculty = faculty;
}
public void adminFaculty(){
faculty.admin();
}
}
现在您可以这样使用它:
University medicalUni = new University();
medicalUni.adminFaculty();
University anotherMedicalUni = new University(new MedFac());
anotherMedicalUni.adminFaculty();
University itUni = new University(new ITFac());
itUni.adminFaculty();
请注意,您总是需要iaffault
的实现,比如medfac
或itfac
。当然,我现在可以添加一个新的教员,而不必更改大学
:
class TechFac implements IFaculty{
@Override
public void admin() {
System.out.println("Tech Fac Admin");
}
}
University techUni = new University(new TechFac());
简介 Software entities (classes, modules, functions, etc.) should be open for extension but closed for modification. 软件实体(类,模块,方法等等)应当对扩展开放,对修改关闭,即软件实体应当在不修改的前提下扩展。 问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码
问题内容: 开闭原则指出:“软件实体(类,模块,功能等)应为扩展而开放,而为修改而封闭”。 但是,约书亚·布洛赫(Joshua Bloch)在其著名的著作《有效的Java》中给出了以下建议:“设计和文档化继承,否则禁止继承”,并鼓励程序员使用“最终”修饰符禁止子类化。 我认为这两个原则显然彼此矛盾(我错了吗?)。编写代码时遵循什么原则?为什么?您是否让类保持打开状态,禁止继承其中的某些类(哪些?)
问题内容: 我想为GUI编写测试用例。我想知道如何模拟JButton的单击,或者如何提取JTable的元素。 为此,我构建了一个简单的GUI,如果单击按钮并且JTextfield为空,则将计数增加1,但是如果提供了数字,则计数将被JTextfield中的整数代替。当然,我想使用Regex来确保输入到JTextfield中的文本实际上是整数,但是让我们假设用户不会四处乱逛并输入非整数。另外,当JTa
滴滴(测试开发) 面试官居然是本科学姐,能感觉的到她在使劲捞我这个菜🐔 做过的项目数据库表怎么设计的 都有什么字段 写Sql语句(查询) Linux常见指令 如果没有收到请假指令怎么排查 SpringBoot常见的注解 @SpringBootapplication @Service @RestController @ResponseBody @Repository Nginx的模式 两种工作模式
我在我的UI自动化框架中使用QAF开源Java库,并希望在每个测试中打开和关闭浏览器。但是,不能用下面的代码完成,因此由testSuccessfulLogin()打开的浏览器保持打开状态,因此testFailedLogin()失败。
问题内容: 一般来说,我对Tensorflow和ML还是比较陌生,因此我对一个(可能)琐碎的问题表示歉意。 我使用辍学技术来提高网络的学习速度,并且看起来工作得很好。然后,我想在一些数据上测试网络,看它是否像这样工作: 显然,由于辍学仍然存在,每次产生不同的结果。我能想到的一种解决方案是创建两个单独的模型- 一个用于训练,另一个用于实际以后使用网络,但是,这种解决方案对我来说似乎不切实际。 解决此