use*_*979 3 java inheritance class
所以这就是我在Java中注意到的:
如果我上课:
class IntStorage
{
public int i;
public void setInt(int i) { this.i = i; }
public int getInt() { return i; }
}
Run Code Online (Sandbox Code Playgroud)
并继承它,并存储其他数据:
class IntAndStringStorage : IntStorage
{
public String s;
public void setString(String s) { this.s = s; }
public String getString() { return s; }
}
Run Code Online (Sandbox Code Playgroud)
我这样做:
IntAndStringStorage IandSstorage = new IntAndStringStorage();
IandSstorage.setString("Test");
IntStorage Istorage = (IntStorage)IandSstorage;
IntAndStorageStorage test = (IntAndStorageStorage)Istorage;
System.out.println(test.getString());
Run Code Online (Sandbox Code Playgroud)
即使我将它转换为继承的类,它也完全有效.现在我假设信息仍然在对象内部,那么我可以完全将它转换为继承的类而不保留旧信息吗?我不想在我的int存储类中留下String存储.希望我的问题足够清楚!提前致谢!
use*_*674 13
转换不会更改Java中的对象(与C#不同,Java中的转换不能重载).因此,强制转换只会更改对象显示的[编译时]类型 - 将对象强制转换回原始类型始终是完全有效的.
要"减少"一个物体需要
此外,接口通常是一种更好的方式来暴露某些"视图"而不是依赖于基类型.