9.6自我检测

编程题

1、定义一个ClassName接口,接口中只有一个抽象方法getClassName(),设计一个类Company,该类实现接口ClassName中的方法getClassName(),功能是获取该类的类名称,编写应用程序使用Company类。

public interface ClassName {
       public String getClassName();
}

public class Company implements ClassName {

	@Override
	public String getClassName() {
		return "这个类名称是Company";
	}
}

public class Java222A {
       public static void main(String[] args) {
    	   ClassName name=new Company();
    	   System.out.println(name.getClassName());
	}
        
}

执行结果

这个类名称是Company

2、考虑一个表示绘图的标准,并可以根据不同的图形来进行绘制。
1:

public interface IChart {
       public void draw();
}
public class Circular implements IChart {

	@Override
	public void draw() {
		System.out.println("画出一个圆形");

	}

}


public class Square implements IChart {

	@Override
	public void draw() {
		System.out.println("画出一个长方形");

	}

}

public class Factory222 {
        public static IChart getOpter(String name) {
        	if("circular".equals(name)) {
        		return new Circular();
        	}else if("square".equals(name)) {
        		return new Square();
        	}else {
        		return null;
        	}
        	
        }
}

public class Java222B {
       public static void main(String[] args) {
		IChart dw=Factory222.getOpter("square");
		dw.draw();
	}
}


执行结果:

画出一个长方形

2:

public interface Ipicture {
       public void getPucture();
}

public class Point2 {
       private double x;
       private double y;
	public Point2(double x, double y) {
		
		this.x = x;
		this.y = y;
	}
	public double getX() {
		return x;
	}
	public void setX(double x) {
		this.x = x;
	}
	public double getY() {
		return y;
	}
	public void setY(double y) {
		this.y = y;
	}
	
       
}



public class Triangle implements Ipicture {//绘制三角形
	private Point2 [] x;//保存第一条边坐标
	private Point2 [] y;//保存第二条边坐标	
	private Point2 [] z;//保存第三条边坐标
	
	public Triangle(Point2[] x, Point2[] y, Point2[] z) {
		this.x = x;
		this.y = y;
		this.z = z;
	}

	@Override
	public void getPucture() {
		System.out.println("绘制第一条边坐标,开始坐标:"+this.x[0].getX()+","+this.x[1].getY()+",结束坐标:"+this.x[1].getX()+","+this.x[1].getY());
		System.out.println("绘制第二条边坐标,开始坐标:"+this.y[0].getX()+","+this.y[1].getY()+",结束坐标:"+this.y[1].getX()+","+this.y[1].getY());
		System.out.println("绘制第三条边坐标,开始坐标:"+this.z[0].getX()+","+this.z[1].getY()+",结束坐标:"+this.z[1].getX()+","+this.z[1].getY());
	}

}


public class Yuan implements Ipicture {
    private  double r;
    
	public Yuan(double r) {
		this.r = r;
	}

	@Override
	public void getPucture() {
		System.out.println("以半径为"+this.r+"绘制图像");

	}

}
public class FactoryDraw {
        public static Ipicture getDraw(String name,double...args) {
        	if("triangle".equals(name)) {
				return new Triangle(
        				new Point2 [] {
        					new Point2(args[0],args[1]) ,new Point2(args[2],args[3])},
        				new Point2 []{
            					new Point2(args[4],args[5]) ,new Point2(args[6],args[7])},
        				new Point2 []{
            					new Point2(args[8],args[9]) ,new Point2(args[10],args[11])}
        				);
        	}else if("yuan".equals(name)){
               return new Yuan(args[0]);
        	}
        	else {
        		return null;
        	}
        }
}

public class JavaDraw {
       public static void main(String[] args) {
		Ipicture hz=FactoryDraw.getDraw("triangle", 1,2,3,4,5,6,7,8,9,11,22,33);
		hz.getPucture();
		Ipicture hz2=FactoryDraw.getDraw("yuan",20.1);
		hz2.getPucture();
	}
}

执行结果

绘制第一条边坐标,开始坐标:1.0,4.0,结束坐标:3.0,4.0
绘制第二条边坐标,开始坐标:5.0,8.0,结束坐标:7.0,8.0
绘制第三条边坐标,开始坐标:9.0,33.0,结束坐标:22.0,33.0
以半径为20.1绘制图像

3、定义类Shape用来表示一般二维图形。Shape具有抽象方法area()和perimeter(),分别用来计算形状的面积和周长。试定义一些二维形状类(如矩形、三角形、圆形、椭圆形等),这些类均为Shape类的子类。

public abstract class Shape {
       public abstract void area();
       public abstract void perimeter();
}

public class Yuan2 extends Shape {
    private double r;
    
	public Yuan2(double r) {
		this.r = r;
	}

	@Override
	public void area() {
		System.out.println(3.14*this.r*this.r);

	}

	@Override
	public void perimeter() {
		System.out.println(2*3.14*this.r);

	}

}

public class ChangFang extends Shape {
    private double x;
    private double y;
    
	public ChangFang(double x, double y) {
		this.x = x;
		this.y = y;
	}

	@Override
	public void area() {
		System.out.println(this.x*this.y);

	}

	@Override
	public void perimeter() {
		System.out.println((this.x+this.y)*2);

	}

}


public class FactoryShape {
       public static Shape getInfo(String name,double...args) {
    	   if("yuan".equals(name)) {
    		   return new Yuan2(args[0]);
    	   }else if("cahngfang".equals(name)) {
    		   return new ChangFang(args[0],args[1]);
    	   }else {
    		   return null;
    	   }
       }
}

public class JavaShape {
       public static void main(String[] args) {
		  Shape er=FactoryShape.getInfo("yuan", 2);
		  er.area();
		  er.perimeter();
		  Shape er2=FactoryShape.getInfo("cahngfang", 2.1,2.5);
		  er2.area();
		  er2.perimeter();
	}
}

执行结果

12.56
12.56
5.25
9.2

填空题

1、 一个类只能继承 一个 个父类,但能实现 多个 接口。
2、 抽象类必须使用_ abstract____ 关键字定义,抽象类中的抽象方法必须 _abstract关键字定义。
3、 接口使用
____interface关键字定义,子类通过____implements____关键字实现接口。
4、 接口中的所有访问权限都是
**public
**_______
5、 Integer类是对 int
基本数据类型的封装。Float类是对 float 基本数据类型的封装。Double类是对 double 基本数据类型的封装。字符类Character是对 char
基本数据类型的封装。
6、 在使用泛型类时,没有指定泛型的类型,则编译会出现 不安全警告 信息,程序在使用时会使用 __Object 类型进行接收。
7、 通过 ? extends 类 指定泛型的上限,通过 ? super类
指定泛型的下限。
8、 使用 _ 通配符可以接收全部的泛型类型实例,但却不可修改泛型属性内容。

选择题

1、 定义接口的关键字是 C
A、 extends B、 class C、 interface D、 public
2、 下面 B 修饰符所定义的方法必须被子类所覆写。
A、 final B、 abstract C、 static D、 interface
3、下面的程序编译运行的结果是 A
_

public class A implements B {
	public static void main(String args[]) {
		int m, n;
		A a = new A();
		m = a.K;
		n = B.K;
		System.out.println(m + "," + n);
	}
}
interface B {
	int K = 5;
}
A、	5,5		B、	0,5		C、	0,0		D、	编译程序产生编译结果

4、 下面关于接口的说法中不正确的是 ______C
A、 接口所有的方法都是抽象的
B、 接口所有的方法一定都是public类型
C、 用于定义接口的关键字是implements
D、 接口是Java中的特殊类,包含全局常量和抽象方法
5、 下面关于Java的说法不正确的是 _A
A、 abstract和final能同时修饰一个类
B、 抽象类不光可以做父类,也可以做子类
C、 抽象方法不一定声明在抽象类中,也可以在接口中
D、 声明为final的方法不能在子类中覆写

判断题

1、 抽象类可以实现接口,接口也可以继承抽象类。 (×)
2、 接口中可以定义普通方法也可以定义抽象方法。 (√)//defaul定义的普通方法和static定义的静态方法。
3、 接口不会继承任何父类,所以不可以使用Object接收接口对象。 (×)
4、 抽象类之中必须定义有抽象方法。 (×)
5、 抽象类中的抽象方法可以不使用abstract定义。 (×)
6、 泛型的主要目的是避免ClassCastException。 (√)

简答题

1、 接口有那些特征?如何定义和实现接口。
答: 接口之中全部由全局常量及抽象方法所组成,一个类可以同时实现多个接口,在Java中使用interface定义接口,子类使用implements实现接口。
2、 接口和抽象类有那些区别?
9.6自我检测_第1张图片
3、 简述基本数据类型的自动装箱及自动拆箱操作。
答: 在JDK 1.5之后,基本数据类型可以采用直接赋值的方式为包装类进行对象的实例化操作,而包装类的对象也可以通过直接赋值的方式变回基本数据类型。
4、 简述泛型的作用
答: 泛型的主要作用是解决对象向下转型所带来的ClassCastException,使用泛型之后,类之中的属性或方法中的参数类型就由调用处来决定,而如果调用处不设置泛型,为了保证程序不出错,则会使用Object类型进行定义。

你可能感兴趣的:(习题)