Java — 面向对象(自测题)

1、
package package1;

class Test
{
	private static int x =  10;

	public void show(int x)  
	{
		x++;
		this.x++;
		System.out.println(x+" "+this.x);
	} 

	public static void main(String[] args)
	{
		int x = 20;	
		Test t = new Test();
		t.show(x);
	}
} 

【答案】:21 11

2、

package package1;

class Fu{
	public int num = 10;
	public Fu(){
		System.out.println("fu");
	}
}
class Zi extends Fu{
	public int num = 20;
	public Zi(){
		System.out.println("zi");
	}
	public void show(){
		int num = 30;
		System.out.println(num);
		System.out.println(this.num);
		System.out.println(super.num);
	}
}
class Test {
	public static void main(String[] args) {
		Zi z = new Zi();
		z.show();
	}
}

【答案】:

fu

zi

30

20

10


3、

/*
 * 1、先加载类 -> 静态代码块中的代码
 * 2、构造器 -> 构造代码块+构造方法
 */
class Fu {
	static {
		System.out.println("静态代码块Fu");
	}

	{
		System.out.println("构造代码块Fu");
	}

	public Fu() {
		System.out.println("构造方法Fu");
	}
}

class Zi extends Fu {
	static {
		System.out.println("静态代码块Zi");
	}

	{
		System.out.println("构造代码块Zi");
	}

	public Zi() {
		System.out.println("构造方法Zi");
	}
}
class Test {
	public static void main(String[] args) {
		Zi z = new Zi();
		
	}
}

【答案】:

静态代码块Fu

静态代码块Zi

构造代码块Fu

构造方法Fu

构造代码块Zi

构造方法Zi


4、

package package1;
/*
 * 系统会自上而下寻找构造器,直到找到构造器,并调用构造器
 * YXYZ
 */
class X {
	Y b = new Y();
	X() {
		System.out.print("X");
	}
}
class Y {
	Y() {
		System.out.print("Y");
	}
}
public class Z extends X {
	Y y = new Y();
	Z() {
		System.out.print("Z");
	}
	public static void main(String[] args) {
		new Z(); 
	}
}

【答案】:YXYZ


5、

package package1;
class Fu
{
	public void show()
	{
		System.out.println("fu show");
	}
}

class Zi extends Fu
{
	public void show()
	{
		System.out.println("zi show");
	}

	public void method()
	{
		System.out.println("zi method");
	}
}
class Test
{
	public static void main(String[] args)
	{
		Fu f = new Zi();
		/*
		 * 子到父,父中没有该方法,所以会报错
		 */
		//f.method();
		
		/*
		 * 父到子,将父类的引用转化成子类的引用,前提是子类还是子类
		 * Zi z = ...;
		 */
		Zi z = (Zi)f;
		z.method();
	}
}

【答案】:zi method


6、

package package1;

import java.nio.channels.ShutdownChannelGroupException;

class A
{
	public void show()
	{
		show2();
	}
	
	public void show2()
	{
		System.out.println("我");
	}
}
class B extends A 
{
//	public void show() {
//		System.out.println("B");
//	}
	public void show2()
	{
		System.out.println("爱");
	}
}
class C extends B 
{
	public void show()
	{
		super.show();
		//System.out.println("C");
	}
	
	public void show2()
	{
		System.out.println("你");
	}
}
public class Test 
{
	public static void main(String[] args) 
	{
		/*
		 * 1.在执行一个方法(不是构造器)的时候一定先在实例(右边)中找方法,
		 * 2.找不到,自下而上的找,
		 * 3.重点,每个方法都要这样去找,执行
		 */
		A a = new B();
		a.show();
		B b = new C();
		b.show();
	}
}

【答案】:


7、

package package1;

class Animal{}
class Dog extends Animal{}
class Cat extends Animal{}

class Test{
	public static void main(String []args) {
		Animal p0 = new Animal();
		Dog p1 = new Dog ();
		Cat p2 = new Cat ();
		Animal p3 = new Dog ();
		Animal p4 = new Cat ();

		p0 = p1;	//向上造型
	//	p1 = p2;	//同类直接不可以直接转化
	//	p1 = (Dog)p2;
		p1 = (Dog)p3;	//向下造型
		p2 = (Cat)p4;
	}
}


你可能感兴趣的:(Java,基础)