资源描述
1. 面向对象的特征有哪方面。(5分)
1.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2.继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3.封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4.多态性:
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
2. 写出一个学生类,他的属性为:姓名、学号、班级、性别、年龄。(20分)
a. 写出相应属性的get和set方法。
public class student {
public String name;
public String id;
public String banji;
public String sex;
public String nianling;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getBanji() {
return banji;
}
public void setBanji(String banji) {
this.banji = banji;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getNianling() {
return nianling;
}
public void setNianling(String nianling) {
this.nianling = nianling;
}
}
b. 将自己的信息输出出来,进行截图。
c. 把学生类改写成从一个person类继承的类,继承相应的属性,父类person需要写出自己的构造方法。
public class Person {
public String tel;
public String shengao;
public String tizhong;
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getShengao() {
return shengao;
}
public void setShengao(String shengao) {
this.shengao = shengao;
}
public String getTizhong() {
return tizhong;
}
public void setTizhong(String tizhong) {
this.tizhong = tizhong;
}
public Person(String n,String m,String s) //构造方法
{
tel = n;
shengao = m;
tizhong = s;
}
}
public class Student extends Person{
public Student(String n, String m, String s) {
super(n, m, s);
}
public String name;
public String id;
public String banji;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getBanji() {
return banji;
}
public void setBanji(String banji) {
this.banji = banji;
}
}
d. 用super引用父类的构造方法。
public class Student extends Person{
public Student(String n, String m, String s) {
super(n, m, s);
}
public String name;
public String id;
public String banji;
public void ssPerson(){
super.tel="111 ";
}
}
e. 说super()与this()的区别。
this表示当前对象,也就是当前类对象,super表示当前类的父类。
3. 编程输出如下图形,写出代码并截图。(10分)
* * * * *
* * * *
* * *
* *
*
public class Test1 {
public static void main(String[] args) {
for(int i =0;i<5;i++){
System.out.println();
for(int j=5;j>i;j--){
System.out.print("*");
}
}
}
}
4. 写出Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?(5分)
区别:Overload是重载的意思,Override是覆盖的意思,也就是重写。
答:Overloaded的方法可以改变返回值的类型
5. 写出下列程序的输出。(12分)
(1).public class z {
static int i =1 ;
public static void main(String[] args) {
System.out.println("AAA=" + new z());
z a = new z() ;
z b = new z() ;
a.i++ ;
System.out.println("a=" + a.i + "b" + b.i);
}
public String toString(){
System.out.println("###");
return "Z" ;
}
}
###
AAA=Z
a=2b2
(2). public class aaa {
public static void main(String[] args) {
try{
method() ;
}catch(Exception e){
System.out.println("m");
}
System.out.println("n");
}
static void method() {
try{
wrench();
System.out.println("a");
}catch(ArithmeticException e){
System.out.println("b");
}finally{
System.out.println("c");
}
}
private static void wrench() {
throw new NullPointerException() ;
}
}
C
M
n
(3) package test;
public class FatherClass
{
public FatherClass()
{
System.out.println("FatherClass Create");
}
}
FatherClass Create
子类:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{
System.out.println("ChildClass Create");
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
FatherClass Create
FatherClass Create
ChildClass Create
(4). class A{
static{
System.out.print("1");
}
public A(){
System.out.print("2");
}
}
class B extends A{
static{
System.out.print("a");
}
public B(){
System.out.print("b");
}
}
public class Hello{
public static void main(String[] ars){
A ab = new B();
ab = new B();
}
1a2b2b
6. 写出抽象类和接口的区别。(5分)
接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的
7. 自拟写出一个类,实现多态、封装、继承,并进行输出(可输出任意值)。(10分)
package ww;
public class Student extends BasicInfo{
private String school;
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public Student(String school) {
super();
this.school = school;
}
public Student() {
super();
school ="英国克莱登大学";
}
public Student(String name, int age) {
super(name, age);
school ="英国克莱登大学";
}
@Override
public String toString() {
return "Student [school=" + school + ",name="+getName()+",age="+getAge()+"]";
}
public static void main(String[] s){
Student student = new Student();
System.out.println(student);
student = new Student("清华大学");
System.out.println(student);
student = new Student("李四", 20);
student.setSchool("北京大学");
System.out.println(student);
}
}
8. 写一个singleton出来,并进行调用,输出成功进行截图(可输出任意值)。(18分)
9. 估算一个首都飞机场每天得航班流量。(5分)
10. 在一个重男轻女的国家里,每个家庭都想生男孩,如果他们生的孩子是女孩,就生下一个,直到孩子是男孩为止。这样的国家,男女比例会是多少?试用程序解释, 如解释不了,则用语言解释。(提示:男还是生女,都是无继承的独立事件)(10分)
展开阅读全文