2020-09-11(Test 答案在最后)

1.已知类关系如下:  
class Employee{ } 
class Manager extends Employee{} 
Class Director extends Employee{} 
则下列语句正确的是: ( )。  

A.  Employee e =new  Manager();    
B. Director d=new  Manager(); 
C. Director d =new  Employee ();   
D. Manager m=new  Director (); 

2.接口是 Java 面向对象的实现机制之一, 以下说法正确的是( )。
A.Java 支持多重继承, 一个类可以实现多个接口 
B.Java 只支持单重继承, 一个类可以实现多个接口 
C.Java 只支持单重继承, 一个类可以实现一个接口      
D.Java 支持多重继承, 但一个类只可以实现一个接口 

3.在子类构造方法的哪个地方可以调用其父类的构造方法(   )。  
A. 任何地方        
B. 构造方法的第一条语句  
C. 构造方法的最后一条语句  
D. 无法在子类构造方法中调用父类的构造方法 

4.关于 Java 中的继承,下列说法错误的是(  )。  
A. 继承是面向对象编程的核心特征, 通过继承可以更有效地组织程序结构。  
B. 继承使得程序员可以在原有类的基础上很快设计出一个功能更强的新类, 而不必从头开始, 避免了工作上的重复。  
C. 每一次继承时, 子类都会自动拥有父类的属性和方法, 同时也可以加入自己的一些特性, 使得它更具体、 功能更强大。  
D. 继承一般有多重继承和单一继承两种方式, 在单一继承中每一个类最多只有一个父类, 而多重继承则可以有多个父类。Java 中的类都采用多重继承。

5.什么样的方法能继承不能被重写(   )。  
A. 私有(private) 方法    B. 最终(final) 方法 
C. 受保护(protected) 的方法   D. 以上都不对

6.下列有关抽象类与接口的叙述中正确的是哪一个(  )。  
A. 抽象类中必须有抽象方法, 接口中也必须有抽象方法 
B. 抽象类中可以有非抽象方法, 接口中也可以有非抽象方法 
C. 含有抽象方法的类必须是抽象类, 接口中的方法必须是抽象方法 
D. 抽象类中的变量定义时必须初始化, 而接口中不是

7.从下列程序中你发现了几处错误    。  
abstract class A{  
abstract void f(){};      
public abstract void k();  } 

class B extends A{  
protected void f (){   } 
void k(){ System.out.print("I am subclass");  }  
public static void main(String[] args) {   
A a=new A(); 
a.f();        
a.k();  
} }
 A. 1    B. 2    C. 3    D. 4 

8在 JAVA 中,下列说法正确的是:     。 
A. 一个子类可以有多个父类, 一个父类也可以有多个子类 
B. 一个子类可以有多个父类, 但一个父类只可以有一个子类 
C. 一个子类只可以有一个父类, 但一个父类可以有多个子类 
D. 上述说法都不对

9.重载指的是方法具有相同的名字, 但这些方法的参数必须不同。 下列哪种说法不属于方法参数的不同    。  
A.  形式参数的个数不同。     
B. 形式参数的类型不同。  
C. 形式参数的名字不同。     
D. 形式参数类型的排列顺序不同。

2.按如下要求
a.设计书类,包含书名,作者,价格属性,不考虑方法
b.设计学生类(Student),包含姓名,性别,成绩,以及拥有的书,在学生类中添加public String introduceMyBook()的方法,以“张三拥有一本三国演义的书”格式向外输出字符串
c.在main方法中定义一个Student类型数组;其中包含十个学生,每个学生都有一本书。
d.让所有的学生介绍下自己书
e.统计十个学生中男女人数
f.打印十个学生的平均成绩

3. 依次完成以下要求:
a.创建Engineer抽象类(工程师)属性有:name,Engineer有一个writerCode抽象方法,其返回结果为String;
b.为Engineer类创建创建两个子类: JavaEngineer类(Java工程师)和IOSEngineer类(iOS工程师);
c.当“Java工程师”对象调用writerCode方法时,需返回字符串:“在写Java代码”;
d.当“iOS工程师”对象调用writerCode方法时,需返回字符串:“在写iOS代码“;
e.创建测试类,在main方法中创建Engineer类型的数组(数组中包含3个Engineer类型工程师),再在测试类中创建创建一个recruit方法,传入main方法中的数组,根据每个engineer对象执行的writerCode方法不同,区分出该对象到底是什么学科的工程师;并将结果打印到控制台;

比如:
Sunny:iOS开发工程师
Jain:java开发工程师
Tony:iOS开发工程师


选择题答案:ABBDB CCCC
package net.csdn.blog.wdd9527.week03.day05.test02;

/**
 * a.设计书类,包含书名,作者,价格属性,不考虑方法
 * b.设计学生类(Student),包含姓名,性别,成绩,以及拥有的书,
 *    在学生类中添加public String introduceMyBook()的方法,
 *    以“张三拥有一本三国演义的书”格式向外输出字符串
 * c.在main方法中定义一个Student类型数组;其中包含十个学生,每个学生都有一本书。
 * d.让所有的学生介绍下自己书
 * e.统计十个学生中男女人数
 * f.打印十个学生的平均成绩
 * @author WDD
 *
 */

public class Main {
	public static void main(String[] args) {
		Student[] s = new Student[10];
		//创建几本书对象
		Book b1 = new Book("三国演义", "罗贯中", 38.8);
		Book b2 = new Book("红楼梦", "曹雪芹", 48.8);
		Book b3 = new Book("西游记", "吴承恩", 28.8);
		Book b4 = new Book("水浒传", "施耐庵", 138.8);
		//创建十个学生
		s[0] = new Student("张三", '男', 88, b1);
		s[1] = new Student("李四", '男', 78, b2);
		s[2] = new Student("赵五", '女', 58, b1);
		s[3] = new Student("钱六", '男', 88, b3);
		s[4] = new Student("孙七", '女', 95, b3);
		s[5] = new Student("赵八", '女', 55, b4);
		s[6] = new Student("李九", '男', 76, b1);
		s[7] = new Student("张十", '男', 93, b2);
		s[8] = new Student("赵十一", '女', 82, b1);
		s[9] = new Student("马十二", '男', 76, b3);
		
		
		//让所有的学生介绍下自己书
		for (int i = 0; i < s.length; i++) {
			String introduceMyBook = s[i].introduceMyBook();
			System.out.println(introduceMyBook);
		}
		
		System.out.println("------------------------------");
		
		//统计十个学生中男女人数
		int count = 0;
		for (int i = 0; i < s.length; i++) {
			if (s[i].sex == '男') {
				count++;
			}
		}
		System.out.println("男生数量有" + count + "人。");
		System.out.println("女生数量有" + (10 - count) + "人。");
		
		System.out.println("------------------------------");
		
		//打印十个学生的平均成绩
		
		double num = 0;
		System.out.println("十个学生的成绩分别为:");
		for (int i = 0; i < s.length; i++) {
			System.out.println(s[i].name + ":" + s[i].results);
		}
		for (int i = 0; i < s.length; i++) {
			
			num += s[i].results;
		}
		System.out.println("十个学生的平均成绩为:" + num/10);
	}

}




package net.csdn.blog.wdd9527.week03.day05.test02;

//书类

public class Book {
	String bookName;//书名
	String author;//作者
	double price;//价格
	public Book(String bookName, String author, double price) {
		super();
		this.bookName = bookName;
		this.author = author;
		this.price = price;
	}
	public Book() {
		super();
	}

}





package net.csdn.blog.wdd9527.week03.day05.test02;

//学生类

public class Student {
	String name;//姓名
	char sex;//性别
	double results;//成绩
	Book book;//所拥有的书籍
	
	public String introduceMyBook() {
		return this.name + "拥有一本" + this.book.bookName + "的书。";
		//return "张三拥有一本三国演义的书";
	}

	public Student() {
		super();
	}

	public Student(String name, char sex, double results, Book book) {
		super();
		this.name = name;
		this.sex = sex;
		this.results = results;
		this.book = book;
	}

	@Override
	public String toString() {
		return "Student [name=" + name + ", sex=" + sex + ", results=" + results + ", book=" + book + "]";
	}
	

}

package net.csdn.blog.wdd9527.week03.day05.test03;

/**
 * a.创建Engineer抽象类(工程师)属性有:name,
 *   Engineer有一个writerCode抽象方法,其返回结果为String;
 * b.为Engineer类创建创建两个子类: JavaEngineer类(Java工程师)和IOSEngineer类(iOS工程师);
 * c.当“Java工程师”对象调用writerCode方法时,需返回字符串:“在写Java代码”;
 * d.当“iOS工程师”对象调用writerCode方法时,需返回字符串:“在写iOS代码“;
 * e.创建测试类,在main方法中创建Engineer类型的数组(数组中包含3个Engineer类型工程师)
 *   再在测试类中创建创建一个recruit方法,传入main方法中的数组,
 *   根据每个engineer对象执行的writerCode方法不同,区分出该对象到底是什么学科的工程师;
 *   并将结果打印到控制台;
 * 比如:
 * Sunny:iOS开发工程师
 * Jain:java开发工程师
 * Tony:iOS开发工程师
 * @author WDD
 *
 */

public class Main {
	public static final String WRITE = "在写Java代码";
	public static void main(String[] args) {
		Engineer[] e = new Engineer[3];
		e[0] = new IOSEngineer("Sunny");
		e[1] = new JavaEngineer("Jain");
		e[2] = new IOSEngineer("Tony"); 
		
		recruit(e);
	}

	public static void recruit(Engineer[] e) {
		for (int i = 0; i < e.length; i++) {
			String writerCode = e[i].writerCode();
			if (WRITE.equals(writerCode)) {
				System.out.println(e[i].name + ":java工程师");
			} else {
				System.out.println(e[i].name + ":iOS工程师");
			}
		}
	}

}



package net.csdn.blog.wdd9527.week03.day05.test03;

//工程师

public abstract class Engineer {
	String name;//姓名
	public abstract String writerCode();
	
	public Engineer(String name) {
		super();
		this.name = name;
	}
	public Engineer() {
		super();
	}
	
}




package net.csdn.blog.wdd9527.week03.day05.test03;

//Java工程师

public class JavaEngineer extends Engineer{

	@Override
	public String writerCode() {
		// TODO Auto-generated method stub
		return "在写Java代码";
	}

	public JavaEngineer() {
		super();
		// TODO Auto-generated constructor stub
	}

	public JavaEngineer(String name) {
		super(name);
		// TODO Auto-generated constructor stub
	}

	
}




package net.csdn.blog.wdd9527.week03.day05.test03;

//iOS工程师

public class IOSEngineer extends Engineer{

	@Override
	public String writerCode() {
		// TODO Auto-generated method stub
		return "在写iOS代码";
	}

	public IOSEngineer() {
		super();
		// TODO Auto-generated constructor stub
	}

	public IOSEngineer(String name) {
		super(name);
		// TODO Auto-generated constructor stub
	}
	

}

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值