Java多态性行为
若我有一个基类调用a,那个么两个子类扩展了一个叫做B,C的基类 B和C都有一些扩展变量..等等 当我要求用户输入B或C时,我可以使用一个arraylist来保存这两个。所以当我需要打印出来的时候,找到它。我不需要通过数组列表B和数组列表C?Java多态性行为,java,class,polymorphism,Java,Class,Polymorphism,若我有一个基类调用a,那个么两个子类扩展了一个叫做B,C的基类 B和C都有一些扩展变量..等等 当我要求用户输入B或C时,我可以使用一个arraylist来保存这两个。所以当我需要打印出来的时候,找到它。我不需要通过数组列表B和数组列表C? 谢谢你的帮助 多态性允许您在任何需要超类型的地方使用子类型。每个子类型都是它的超类型,所以您只需创建一个超类型列表,就可以传入所有内容 List<A> myList = new ArrayList<A>(); myList.add(
谢谢你的帮助 多态性允许您在任何需要超类型的地方使用子类型。每个子类型都是它的超类型,所以您只需创建一个超类型列表,就可以传入所有内容
List<A> myList = new ArrayList<A>();
myList.add(new B());
myList.add(new C());
List myList=new ArrayList();
添加(新的B());
添加(新的C());
同样值得注意的是:除了Java中的数组之外,列表是不可协变的,因此不能将
列表
放在需要列表
的位置。这是一件好事,因为否则您可以在B
列表中输入C
的实例,这将引发异常 多态性允许您在任何需要超类型的地方使用子类型。每个子类型都是它的超类型,所以您只需创建一个超类型列表,就可以传入所有内容
List<A> myList = new ArrayList<A>();
myList.add(new B());
myList.add(new C());
List myList=new ArrayList();
添加(新的B());
添加(新的C());
同样值得注意的是:除了Java中的数组之外,列表是不可协变的,因此不能将
列表
放在需要列表
的位置。这是一件好事,因为否则您可以在B
列表中输入C
的实例,这将引发异常 声明类型为A的arraylist。
B和C将放入列表。声明类型为A的arraylist。
B和C将适合该列表。您需要做的是创建一个类型为您的超类的Arraylist
public class A
{
...
}
public class B extends A
{
....
}
public class C extends A
{
}
在toString方法之外的B类和C类上
无论何时您想要打印arraylist(其中是否包含B或C)
你就这样做吧:
List<A> myArray = new ArrayList<A>();
// Fill it with B and C objects
// Iterate through the ArrayList
for(A item : myArray)
System.out.println(item.toString());
List myArray=new ArrayList();
//用B和C对象填充它
//遍历ArrayList
用于(项目:myArray)
System.out.println(item.toString());
您需要做的是创建一个类型为的Arraylist,它是您的超类
public class A
{
...
}
public class B extends A
{
....
}
public class C extends A
{
}
在toString方法之外的B类和C类上
无论何时您想要打印arraylist(其中是否包含B或C)
你就这样做吧:
List<A> myArray = new ArrayList<A>();
// Fill it with B and C objects
// Iterate through the ArrayList
for(A item : myArray)
System.out.println(item.toString());
List myArray=new ArrayList();
//用B和C对象填充它
//遍历ArrayList
用于(项目:myArray)
System.out.println(item.toString());
使用ArrayList
。使用ArrayList
。我会说更少的“意思”,更多的“允许你”。感谢你的评论。我去掉了“means”。谢谢你,库鲁,但是在这个例子中,我仍然可以从Arraylist A中拆分B和C,并且只在B或C中获取特定变量吗?你仍然可以通过使用instanceof
检查过滤对象,将列表
分为列表和列表
。创建两个新列表,一个是泛型B
,一个是泛型C
,然后迭代你的列表
,根据你的实例将每个元素添加到这两个列表中的任何一个-检查。我会说少一些“意思”,多一些“允许你”。感谢你的评论。我去掉了“means”。谢谢你,库鲁,但是在这个例子中,我仍然可以从Arraylist A中拆分B和C,并且只在B或C中获取特定变量吗?你仍然可以通过使用instanceof
检查过滤对象,将列表
分为列表和列表
。创建两个新列表,一个为泛型B
,一个为泛型C
,然后迭代您的列表
,并根据您的实例将每个元素添加到两个列表中的任何一个。请检查,但是在这种情况下,我仍然可以从Arraylist A中拆分B和C,只在B或C中获取特定变量吗?谢谢你,福顿,但是在这种情况下,我仍然可以从Arraylist A中拆分B和C,只在B或C中获取特定变量吗?