class A{ protected void print(String s){ System.out.println(s); } A(){print("A()");} public void f(){print("A:f()");} } class B extends A { B(){print("B()");} public void f(){print("B:f()');} public static void main(String arg[]){ B b=new B();b.f(); } }
时间: 2023-07-16 11:11:29 浏览: 121
这是一个简单的 Java 代码,包含了两个类 A 和 B,B 继承自 A。在 B 类中,重写了 A 类中的方法 f(),并且定义了一个构造函数 B()。在 main 函数中,创建了一个 B 类对象 b,并调用了它的 f() 方法。
当执行 main 函数时,输出结果为:
```
A()
B()
B:f()
```
解释一下输出结果的产生过程:
1. 创建 B 类对象 b 时,首先调用了 A 类的构造函数,输出 "A()"。
2. 接着调用 B 类的构造函数,输出 "B()"。
3. 最后调用 b 对象的 f() 方法,由于 B 类重写了 A 类的 f() 方法,因此输出 "B:f()"。
相关问题
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 Pen { public static void main(String[] args){ Color Red = new Red(); Brush BigBrush = new BigBrush(); BigBrush.setColor(Red); BigBrush.operation(); Color Green = new Green(); Brush MidBrush = new MidBrush(); MidBrush.setColor(Green); MidBrush.operation(); Color Blue = new Blue(); Brush SmallBrush = new SmallBrush(); SmallBrush.setColor(Blue); SmallBrush.operation(); } } interface Color { public void operationColor(); } class Red implements Color{ String color; public void operationColor() { color="Red"; System.out.println("颜色为红色"); } } class Blue implements Color{ String color; public void operationColor() { color="Blue"; System.out.println("颜色为蓝色"); } } class Green implements Color{ String color; public void operationColor() { color="Green"; System.out.println("颜色为绿色"); } } class Concretelmplementor { public Red getredcolor(){ return new Red(); } public Blue getbluecolor(){ return new Blue(); } public Green getgreencolor(){ return new Green(); } } abstract class Brush { protected Color color; public void setColor(Color color) { this.color=color; } public abstract void operation(); } class BigBrush extends Brush{ public void operation(){ System.out.print("使用大号毛笔:"); color.operationColor(); } } class MidBrush extends Brush{ public void operation(){ System.out.print("使用中号毛笔:"); color.operationColor(); } } class SmallBrush extends Brush{ public void operation(){ System.out.print("使用小号毛笔:"); color.operationColor(); } }
这段代码是一个简单的桥接模式的示例,通过将抽象部分与它的实现部分分离,使它们可以独立地变化。其中,Color接口充当实现部分,Brush抽象类充当抽象部分,BigBrush、MidBrush和SmallBrush是Brush类的具体实现,它们分别使用了不同大小的毛笔和不同颜色的颜料进行作画。同时,Concretelmplementor类是实现部分的具体实现,提供了获取不同颜色的颜料的方法。
阅读全文