1、
package ch7;
class A{
}
public class Instance {
public static void main(String[] args) {
A a;
a=new A();
}
}
2、
package ch7;
class Cleanser{
private String s="Cleanser";
public void append(String a) {
s+=a;
}
public void dilute() {
append("dilute()");
}
public void apply() {
append("apply()");
}
public void scrub() {
append("scrub()");
}
public String toString() {
return s;
}
}
class Detergent extends Cleanser{
public void scrub() {
append("Detergent.scrub()");
super.scrub();
}
public void foam() {
append("foam()");
}
}
public class Detergent2 extends Detergent{
public void scrub() {
append("Detergent2.scrub");
super.scrub();
}
public void sterilize() {
append("sterilize()");
}
public static void main(String[] args) {
Detergent2 y=new Detergent2();
y.sterilize();
y.scrub();
System.out.println(y);
}
}
3、
package ch7;
class Art {
Art(){
System.out.println("Art constructor");
}
}
class Drawing extends Art {
Drawing(){
System.out.println("Drawing constructor");
}
}
public class Cartoon extends Drawing{
public static void main(String[] args) {
Cartoon x=new Cartoon();
}
}
4、第二题和第三题
5、
package ch7;
class A{
A() {
System.out.println("A");
}
}
class B{
B() {
System.out.println("B");
}
}
public class C extends A{
B b=new B();
public static void main(String[] args) {
C c=new C();
}
}
7、
package ch7;
class A{
A(int i) {
System.out.println("A");
}
}
class B{
B(int i) {
System.out.println("B");
}
}
public class C extends A{
B b=new B(3);
C(int i){
super(i);
System.out.println("C");
}
public static void main(String[] args) {
C c=new C(4);
}
}
8、
package ch7;
class A1{
A1(int i){
System.out.println(“A1”);
}
}
public class A3 extends A1{
A3(){
super(3);
System.out.println(“a3”);
}
A3(int i){
super(i);
System.out.println(“A3”);
}
public static void main(String[] args) {
A3 a1=new A3();
A3 a2=new A3(4);
}
}
9、
package ch7;
class Component1{
Component1(){
System.out.println("Component1");
}
}
class Component2{
Component2(){
System.out.println("Component2");
}
}
class Component3{
Component3(){
System.out.println("Component3");
}
public String toString() {
return("Component3 is used");
}
}
class Root{
Root(){
System.out.println("Root");
}
Component1 a=new Component1();
Component2 b=new Component2();
static Component3 c=new Component3();
}
public class Stem extends Root{
Stem(){
System.out.println("Stem");
}
public static void main(String[] args) {
Stem s=new Stem();
System.out.println(c);
}
}
10、
package ch7;
class Component1{
Component1(){
System.out.println(“Component1”);
}
}
class Component2{
Component2(){
System.out.println(“Component2”);
}
}
class Component3{
Component3(){
System.out.println(“Component3”);
}
public String toString() {
return(“Component3 is used”);
}
}
class Root{
Root(){
System.out.println(“Root”);
}
Component1 a=new Component1();
Component2 b=new Component2();
static Component3 c=new Component3();
}
public class Stem extends Root{
Stem(){
System.out.println(“Stem”);
}
public static void main(String[] args) {
Stem s=new Stem();
System.out.println©;
}
}
11、
package ch7;
class Cleanser{
private String s="Cleanser";
public void append(String a) {
s+=a;
}
public void dilute() {
append("dilute()");
}
public void apply() {
append("apply()");
}
public void scrub() {
append("scrub()");
}
public String toString() {
return s;
}
}
public class Detergent2{
private Cleanser control=new Cleanser();
public void scrub() {
control.append("Detergent2.scrub");
control.scrub();
}
public void sterilize() {
control.append("sterilize()");
}
public static void main(String[] args) {
Detergent2 y=new Detergent2();
y.sterilize();
y.scrub();
System.out.println(y.control);
}
}
12、
package ch7;
class Component1 extends Root{
Component1(int i){
super(i);
System.out.println(“Component1”);
}
void dispose() {
System.out.println(“Component1 dispose”);
super.dispose();
}
}
class Component2 extends Root{
Component2(int i){
super(i);
System.out.println(“Component2”);
}
void dispose() {
System.out.println(“Component2 dispose”);
super.dispose();
}
}
class Component3 extends Root{
Component3(int i){
super(i);
System.out.println(“Component3”);
}
void dispose() {
System.out.println(“Component3 dispose”);
super.dispose();
}
public String toString() {
return(“Component3 is used”);
}
}
class Root{
Root(int i){
System.out.println(“Root”);
}
void dispose() {
System.out.println(“Root dispose”);
}
}
public class Stem extends Root{
Component1 a=new Component1(3);
Component2 b=new Component2(4);
static Component3 c=new Component3(5);
Stem(int i){
super(i);//或super(3),super(4)都是可以的
System.out.println(“Stem”);
}
void dispose() {
a.dispose();
b.dispose();
c.dispose();
System.out.println(“Stem dispose”);
super.dispose();
}
public static void main(String[] args) {
Stem s=new Stem(3);
System.out.println©;
try {
}finally {
s.dispose();
}
}
}
这题如果把a或者b或者c的定义语句移到Root类中就会产生java.lang.StackOverflowError,是因为循环调用引起的,子类定义语句调用超类,超类定义变量又调用子类定义语句,导致报错。
13、
package ch7;
class B1{
void b1(){
System.out.println("None");
}
void b1(int i) {
System.out.println(i);
}
void b1(char c) {
System.out.println(c);
}
}
public class B extends B1{
void b1(String s) {
System.out.println(s);
}
public static void main(String[] args) {
B b=new B();
b.b1();
b.b1(3);
b.b1('x');
b.b1("xyz");
}
}