SuperClass superc =new SuperClass("super"); SubClass subc=new SubClass("sub1"," Java"); SuperClass ssc=new SubClass("sub2"," Java");
时间: 2023-04-06 16:01:12 浏览: 96
这是一个关于 Java 类的问题,可以回答。这段代码定义了一个父类 SuperClass 和一个子类 SubClass,分别实例化了一个父类对象 superc 和两个子类对象 subc 和 ssc。其中,subc 对象传入了两个参数,分别是字符串 "sub1" 和 "Java",而 ssc 对象同样是子类对象,但传入了不同的参数,分别是字符串 "sub2" 和 "Java"。
相关问题
class SuperClass { private int n; SuperClass(){ System.out.println("SuperClass()"); } SuperClass(int n) { System.out.println("SuperClass(int n)"); this.n = n; } } // SubClass 类继承 class SubClass extends SuperClass{ private int n; SubClass(){ // 自动调用父类的无参数构造器 System.out.println("SubClass"); } public SubClass(int n){ super(300); // 调用父类中带有参数的构造器 System.out.println("SubClass(int n):"+n); this.n = n; } } // SubClass2 类继承 class SubClass2 extends SuperClass{ private int n; SubClass2(){ super(300); // 调用父类中带有参数的构造器 System.out.println("SubClass2"); } public SubClass2(int n){ // 自动调用父类的无参数构造器 System.out.println("SubClass2(int n):"+n); this.n = n; } } public class TestSuperSub{ public static void main (String args[]){ System.out.println("------SubClass 类继承------"); SubClass sc1 = new SubClass(); SubClass sc2 = new SubClass(100); System.out.println("------SubClass2 类继承------"); SubClass2 sc3 = new SubClass2(); SubClass2 sc4 = new SubClass2(200); } }
这段代码演示了Java中的继承和构造器的调用顺序。
其中,`SuperClass`是一个父类,有两个构造器,一个无参数构造器和一个带有一个参数的构造器。`SubClass`和`SubClass2`是两个子类,它们分别继承`SuperClass`。
在`SubClass`和`SubClass2`的构造器中,分别调用了`super()`方法来调用父类的构造器。
当创建`SubClass`对象时,会先自动调用父类的无参数构造器,然后再调用子类的无参数构造器。当创建`SubClass`对象时,会先调用父类的带有一个参数的构造器,然后再调用子类的带有一个参数的构造器。
因此,运行这段代码的结果如下:
```
------SubClass 类继承------
SuperClass()
SubClass
SuperClass(int n)
SubClass(int n):100
------SubClass2 类继承------
SuperClass(int n)
SubClass2
SuperClass()
SubClass2(int n):200
```
可以看到,当创建`SubClass`对象时,先输出了`SuperClass()`,然后输出了`SubClass`。当创建`SubClass2`对象时,先输出了`SuperClass(int n)`,然后输出了`SubClass2`。
[{id=class, name=Class, super=, attributes={}}, {id=1774522940461678598, name=military ships, super=Class, attributes={}}, {id=1774522940470067204, name=ferry ships, super=Class, attributes={}}, {id=1774522940470067205, name=Container vessels, super=Class, attributes={}}, {id=1774522940461678597, name=Rescue Vessel, super=Class, attributes={}}] 转为list java
假设你有一个包含上述元素的List<Map<String, Object>>,你可以使用以下代码将其转换为List<ClassInfo>:
```
List<Map<String, Object>> data = // 假设你已经有了上述数据
List<ClassInfo> classInfos = data.stream().map(map -> {
ClassInfo classInfo = new ClassInfo();
classInfo.setId((Long) map.get("id"));
classInfo.setName((String) map.get("name"));
classInfo.setSuperClass((String) map.get("super"));
Map<String, Object> attributes = (Map<String, Object>) map.get("attributes");
classInfo.setAttributes(attributes);
return classInfo;
}).collect(Collectors.toList());
```
其中,ClassInfo是一个包含id、name、superClass和attributes属性的类。
上述代码中,我们使用Stream API中的map方法来将每个Map对象转换为一个ClassInfo对象,并使用Collectors.toList()方法将它们收集到一个List<ClassInfo>中。
请注意,由于Map中的属性值类型不确定,因此我们需要进行强制类型转换。如果Map中属性值的类型与我们期望的类型不匹配,可能会抛出ClassCastException异常。因此,在实际应用中,我们应该根据具体情况进行异常处理。
阅读全文