javaoop继承与接口
我有几个关于java中oop的问题 我明白,is-a关系意味着继承 我理解,可以关系意味着我需要实现接口 这里出现了问题: 现在,如果我有更多的变量,例如: 在类方->内部侧; 在类矩形->整数宽度,整数高度。。。。等等 如果我按照建议的好做法去做,即创建一个接口实例javaoop继承与接口,java,oop,Java,Oop,我有几个关于java中oop的问题 我明白,is-a关系意味着继承 我理解,可以关系意味着我需要实现接口 这里出现了问题: 现在,如果我有更多的变量,例如: 在类方->内部侧; 在类矩形->整数宽度,整数高度。。。。等等 如果我按照建议的好做法去做,即创建一个接口实例 Shape s = new Square(); 然后我无法访问实例变量侧 所以,我不得不依靠这样的东西: Square s = new Square(); s.side = 3; s.draw(); Dog d = ne
Shape s = new Square();
然后我无法访问实例变量侧
所以,我不得不依靠这样的东西:
Square s = new Square();
s.side = 3;
s.draw();
Dog d = new Dog();
d.teeth = 30;
Square s = new Square();
s.side = 3;
s.draw();
Dog d = new Dog();
d.teeth = 30;
狗有自己的变数,如牙齿、腿和眼睛
Animal a = new Dog();
a.teeth = 30; // will not work
或
按照这样的做法是否正确:
Square s = new Square();
s.side = 3;
s.draw();
Dog d = new Dog();
d.teeth = 30;
所以,我遗漏了一些设计细节?请解释一下
我正在尽我最大的努力去做正确的设计。只是偶然发现了这些东西 到目前为止,您的设计是正确的。具体回答您的问题:
那么,我的设计是否不正确否-就目前而言,它是正确的。
实现接口的类是否应该只具有接口所具有的方法,而不具有用于调用的其他方法否-它可以也可能会有其他方法。否则,实现接口的所有类都是相同的。
你只会做:
Shape s = new Square();
如果要在s上执行可应用于任何形状的操作(例如绘制)
如果需要执行Square
特定操作,则需要使用Square
变量。没有什么可以说你必须使用一个超级类
我建议你继续你的设计,找到一些真实的单词例子,然后它会变得更清晰
更新:
请注意,new
操作可能会在工厂内使用。类似地,设置属性(如边数)将(或可能)发生在工厂方法内部。工厂总是需要知道他们正在处理的确切类型
在工厂之外,事情可以更一般
因此,有一条规则可能有助于您的设计(但不是硬性的和快速的),那就是在工厂中使用特定的类,而在工厂之外使用Shape
类。您的设计是正确的(到目前为止)。具体回答您的问题:
那么,我的设计是否不正确否-就目前而言,它是正确的。
实现接口的类是否应该只具有接口所具有的方法,而不具有用于调用的其他方法否-它可以也可能会有其他方法。否则,实现接口的所有类都是相同的。
你只会做:
Shape s = new Square();
如果要在s上执行可应用于任何形状的操作(例如绘制)
如果需要执行Square
特定操作,则需要使用Square
变量。没有什么可以说你必须使用一个超级类
我建议你继续你的设计,找到一些真实的单词例子,然后它会变得更清晰
更新:
请注意,new
操作可能会在工厂内使用。类似地,设置属性(如边数)将(或可能)发生在工厂方法内部。工厂总是需要知道他们正在处理的确切类型
在工厂之外,事情可以更一般
因此,有一条规则可能有助于您的设计(但不是硬性的和快速的),那就是在工厂中使用特定的类,而在工厂之外使用Shape
类。您的设计是正确的(到目前为止)。具体回答您的问题:
那么,我的设计是否不正确否-就目前而言,它是正确的。
实现接口的类是否应该只具有接口所具有的方法,而不具有用于调用的其他方法否-它可以也可能会有其他方法。否则,实现接口的所有类都是相同的。
你只会做:
Shape s = new Square();
如果要在s上执行可应用于任何形状的操作(例如绘制)
如果需要执行Square
特定操作,则需要使用Square
变量。没有什么可以说你必须使用一个超级类
我建议你继续你的设计,找到一些真实的单词例子,然后它会变得更清晰
更新:
请注意,new
操作可能会在工厂内使用。类似地,设置属性(如边数)将(或可能)发生在工厂方法内部。工厂总是需要知道他们正在处理的确切类型
在工厂之外,事情可以更一般
因此,有一条规则可能有助于您的设计(但不是硬性的和快速的),那就是在工厂中使用特定的类,而在工厂之外使用Shape
类。您的设计是正确的(到目前为止)。具体回答您的问题:
那么,我的设计是否不正确否-就目前而言,它是正确的。
实现接口的类是否应该只具有接口所具有的方法,而不具有用于调用的其他方法否-它可以也可能会有其他方法。否则,实现接口的所有类都是相同的。
你只会做:
Shape s = new Square();
如果要在s上执行可应用于任何形状的操作(例如绘制)
如果需要执行Square
特定操作,则需要使用Square
变量。没什么好说的