class Super { public void print() { System.out.println("Super->print"); } } public class Sub extends Super { public void print() { System.out.println("Sub->print"); } public static void main(String[] args) { Super s = new Sub(); s.print(); } } 运行结果:
时间: 2024-03-31 16:35:49 浏览: 23
输出为 "Sub->print",因为在 main 方法中,创建了一个 Sub 对象并赋值给了 Super 类型的变量 s,然后调用了 s 的 print 方法。由于 Sub 类重写了 print 方法,所以运行时调用的是 Sub 类的 print 方法,输出 "Sub->print"。这就是 Java 中的多态性。
相关问题
public class CCC { protected int x ; public CCC ( int x ){ this . x = x ; public ccc (){ this . x =0; public void printX ( int x ){ System . out . printin ( x ); public void printX (){ System . out . println ( x ); public class DDD extends CCC { private int x ; public DDD ( int x ){ super . x =0; this . x = x ;public void printX ( int x ){ System . out . printIn ( this . x ); System . out . println ( x ); public void printX (){ System . out . println ( x ); public void print (){ super . printX (); super . printX (2); this . printX (6); printX (); public static void main ( String args []){ DDD bb = new DDD (7); bb . print ();
这段代码存在一些语法错误。下面是修正后的代码:
```
public class CCC {
protected int x;
public CCC(int x) {
this.x = x;
}
public CCC() {
this.x = 0;
}
public void printX(int x) {
System.out.println(x);
}
public void printX() {
System.out.println(x);
}
}
public class DDD extends CCC {
private int x;
public DDD(int x) {
super();
this.x = x;
}
public void printX(int x) {
System.out.println(this.x);
System.out.println(x);
}
public void printX() {
System.out.println(x);
}
public void print() {
super.printX();
super.printX(2);
this.printX(6);
printX();
}
public static void main(String[] args) {
DDD bb = new DDD(7);
bb.print();
}
}
```
修正后的代码定义了两个类:CCC 和 DDD。CCC 类有一个成员变量 x,一个带参数的构造函数、一个无参构造函数以及两个成员方法 printX。其中,一个 printX 方法带有一个 int 类型的参数,另一个不带参数。
DDD 类继承自 CCC 类,并添加了一个私有成员变量 x 和一个带参数的构造函数。DDD 类重写了 CCC 类的 printX 方法,并添加了一个叫做 print 的成员方法。
在 main 方法中,创建了一个 DDD 类的对象 bb,并调用了它的 print 方法。print 方法分别调用了父类 CCC 的 printX 方法、带参数的 printX 方法、自己的 printX 方法和不带参数的 printX 方法。
public class test<T> { public <T super Number> void printObj(T num) { System.out.println(num); } }为什么报错?如何修改
这段代码报错的原因是 `<T super Number>` 这个语法不正确,应该使用 `<? super Number>`。
正确的代码如下:
```
public class test<T> {
public void printObj(T num) {
System.out.println(num);
}
public void printNumList(List<? super Number> numList) {
System.out.println(numList);
}
}
```
在泛型方法中使用 `<? super Number>` 表示参数类型必须是 Number 类型或其父类类型,这样就可以正确编译通过。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)