• 0717作业



    一、选择题

    1. Person类和Test类的代码如下所示,则代码中的错误语句是( C )。(选择一项)
    public class Person {
    public String name;
    public Person(String name) {
    this.name = name;
    }
    }
    public class Test {
    public static void main(String[] args) {
    final Person person = new Person("欧欧");
    person.name = "美美";
    person = new Person("亚亚");
    }
    }

    A. final Person person = new Person("欧欧");
    B. person.name = "美美";
    C. person = new Person("亚亚");
    D. 没有错误

    2. 如下Java代码运行的结果是( B )。(选择一项)
    public class Test {
    final int age;
    public Test(){
    age=10;
    }
    public static void main(String[ ] args) {
    System.out.println(new Test().age);
    }
    }

    A 输出:0
    B. 输出:10
    C. 输出:null
    D. 运行时出现异常


    3. 以下代码中错误的语句是( B )。(选择一项)
    public class Something{
    public static void main(String[] args){
    final Other o=new Other();
    new Something().addOne(o);//1
    }
    public void addOne( Other o){
    o.i++;//2
    o = new Other();//3
    }
    }
    class Other{
    public int i;
    }

    A 1
    B. 2
    C. 3
    D. 没有错误

    4. 下列选项中,关于Java的抽象类和抽象方法说法正确的是( AC )。(选择二项)

    A 抽象类中可以含有0个或多个抽象方法
    B. 抽象类中不可以有构造方法
    C. 一个类中若有抽象方法,则这个类必为抽象类
    D. 子类必须重写父类所有的抽象方法

    5. 在Java中关于abstract关键字,以下说法正确的是( AB )。(选择两项)

    A abstract类中可以没有抽象方法
    B. abstract类的子类也可以是抽象类
    C. abstract方法可以有方法体
    D. abstract类可以创建对象

    6. 以下选项可替换题目中//add code here而不产生编译错误的是( BD )。(选择二项)
    public abstract class MyClass{
    public int constInt=5;
    //add code here
    public void method( ){
    }
    }

    A public abstract void method(int a);
    B. constInt =constInt+5;
    C. public int method( );
    D. public abstract void anotherMethod( );

    7. 在Java接口中,下列选项中属于有效的方法声明是( AB )。(选择二项)

    A public void aMethod( );
    B. final void aMethod( );
    C. void aMethod(){ }
    D. private void aMethod( );

    8. 以下选项中关于匿名内部类的说法正确的是( AB )。(选择二项)

    A. 匿名内部类可以实现多个接口,或者继承一个父类
    B. 匿名内部类不能是抽象类,必须实现它的抽象父类或者接口里包含的所有抽象方法
    C. 匿名内部类没有类名,所以匿名内部类不能定义构造方法
    D. 匿名内部类可以直接访问外部类的所有局部变量

    二、判断题(共20个题目,总计10分)
    1.声明为final的类不能是超类。( T )
    2.使用final修饰的变量将变成常量,其中不能再被改变;使用final修饰的方法将无法被子类重载;使用final修饰的类将无法再被其他类继承。( F )
    3.抽象方法不能含有方法体,并且必须定义在抽象类中。(T )
    4.抽象类是指在class前加使用abstract关键字修饰,且可以存在抽象方法和普通方法的类。( T )
    5.接口中只有常量,没有变量;只有抽象方法,并且全部都是public方法。( T )
    6.抽象类和接口都不能实例化,都没有构造方法。( F )
    7.接口并不要求实现类和接口在概念本质上一致的,仅仅是实现了接口定义的约定或者能力而已。接口定义了“做什么”,而实现类负责完成“怎么做”,体现了功能(规范)和实现分离的原则。( F )
    8.内部类作为外部类成员,权限修饰符和其他成员一样,可声明为private、默认、protected或public。(T )
    9.匿名内部类适合创建那种只需要使用一次的类,它可以实现一个或多个接口,或者继承一个父类。(T )
    10.对于物理连接,比如数据库连接、输入流输出流、Socket连接等,垃圾回收机制无能为力,必须手动关闭才可以。( F )
    11.垃圾回收机制回收任何对象之前,总会先调用它gc( )方法,该方法是Object类提供的方法。不要主动调用某个对象的该方法,应该交给垃圾回收机制调用。( T )

    三、简答题
    1.final和abstract关键字的作用。
    final 作为修饰符,用来定义类,方法和变量.定义变量后,变量就成为了常量,不能再改变;定义类后,类不能再被继承;定义方法后,方法不能被子类重写.
    abstract 作为修饰符,定义抽象类,方法.定义类后,类就是抽象类,抽象类多用于接口;定义方法后,方法就是抽象方法,抽象方法不能有方法体,而且强制要求子类重写本方法
    2.接口和抽象类的联系和区别。
    接口一定是抽象类,抽象类不一定是接口.
    接口中的成员变量只能是常量,没有构造方法,只能是抽象方法
    抽象类中的成员变量既可以是变量,也可以是常量,有构造方法,方法中即可以有抽象方法,也可以没有抽象方法
    3.内部类的类型及其特点。
    内部类就是定义在类中的一个类,它可以直接访问外部类的成员,包括私有.
    外部类要想访问内部类,必须先创建对象
    4.介绍Java垃圾回收机制。

    四、编码题
    1.编写程序描述兔子和青蛙
    需求说明:使用面向对象的思想,设计自定义类描述兔子和青蛙。
    实现思路及关键代码
    1)分析兔子和青蛙的共性
    2)根据共性,定义抽象的动物类
    属性:名字、颜色、类别(哺乳类、非哺乳类)
    方法:吃饭,发出叫声
    3)根据青蛙会游泳 抽象游泳的接口
    方法:游泳
    4)定义兔子继承动物类,青蛙继承动物同时实现游泳接口
    程序运行结果如图所示。

    class Demo6_Animal 
    {
        public static void main(String[] args) 
        {
            Rabbit r1 = new Rabbit("美人","黑色","哺乳类");
            r1.call();
            r1.eat();
            System.out.println("---------------------------------");
            Frog f1 = new Frog("大兵","绿色","非哺乳类");
            f1.call();
            f1.eat();
            f1.swim();
        }
    }
    /*
    定义 一个父类 抽象类
    */
    abstract class Animal
    {    // 属性
        private String name;
        private String color;
        private String kind;
    
        //构造方法
        public Animal() {
            super();
        }
        public Animal(String name,String color,String kind) {
                super();
                this.name = name;
                this.color = color;
                this.kind = kind;
        }
    
        // setXxx  getXxx方法
        public void setName(String name) {
            this.name = name;
        }
        public String getName() {
            return name;
        }
        public void setColor(String color) {
            this.color =color;
        }
        public String getColor() {
            return color;
        }
        public void setKind(String kind) {
            this.kind = kind;
        }
        public String getKind() {
            return kind;
        }
    
        //抽象方法
        public abstract void eat();
        public abstract void call();
    }
    
    /*
    定义 一个子类  兔子
    */
    
    class Rabbit extends Animal
    {
        public Rabbit() {
            super();
        }
        public Rabbit(String name,String color,String kind) {
            super(name,color,kind);
        }
        public void eat() {
            System.out.println("兔子是"+getKind()+",爱吃胡萝卜");
        }
        public void call() {
            System.out.println("那只"+getColor()+"的,名叫"+getName()+"的兔子"+"正在叽叽的叫");
        }
    }
    /*
    定义 一个子类  青蛙
    */
    class Frog extends Animal implements Swimming
    {
        public Frog() {
            super();
        }
        public Frog(String name,String color,String kind) {
            super(name,color,kind);
        }
        public void eat() {
            System.out.println("青蛙是"+getKind()+",爱吃昆虫");
        }
        public void call() {
            System.out.println("那只"+getColor()+"的,名叫"+getName()+"的青蛙"+"正在呱呱的叫");
        }
        public void swim() {
            System.out.println("虽然不是鱼,但青蛙也是泳坛高手");
        }
    
    }
    /*
    定义 一个接口   青蛙的游泳接口
    */
    interface Swimming 
    {
        public abstract void swim();
    }

    2.编写程序描述影视歌三栖艺人
    需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人。
    实现思路及关键代码
    1)分析影视歌三栖艺人的特性
    a)可以演电影
    b)可以演电视剧
    c)可以唱歌
    2)定义多个接口描述特性
    a)演电影的接口-----方法:演电影
    b)演电视剧的接口-----方法:演电视剧
    c)唱歌的接口-----方法:唱歌
    3)定义艺人类实现多个接口
    程序运行结果如图2所示。

    class Demo1_Star 
    {
        public static void main(String[] args) 
        {
            Star s1 = new Star("马素素");
            s1.show();
            s1.movie();
            s1.television();
            s1.song();
        }
    }
    interface Movie    //接口 演电影
    {
        public void movie();
    }
    
    interface Television  //接口 演电视剧
    {
        public void television();
    }
    
    interface Song   //接口 唱歌
    {
        public void song();
    }
    
    /*
     定义一个艺人类
    */
    class Star implements Movie,Television,Song
    {
        private String name;
    
        public Star() {
            super();
        }
        public Star(String name) {
            super();
            this.name = name;
        }
    
          // 定义setXxx方法 getXxx方法
        public void setName() {
            this.name = name;
        }
        public String getName() {
            return name;
        }
        
        public void show() {
            System.out.println("大家好!我是" + getName());
        }
    
        public void movie() {
            System.out.println("我能演电影");
        }
        public void television() {
            System.out.println("我能演电视剧");
        }
        public void song() {
            System.out.println("我会唱歌");
        }
    
    }


    五、可选题
    1.实现不同符合PCI规范的适配器
    需求说明:PCI是一种规范,所有实现了该规范的适配器,必如显卡、声卡、网卡都可以安装到PCI插槽上并工作。模拟实现该功能。

    实现思路及关键代码
    1)定义PCI接口,具有传送数据send()方法
    2)定义显卡VideaCard类,实现该接口
    3)定义声卡AudioCard类,实现PCI接口
    4)定义网卡NetCard类,实现PCI接口
    5)定义测试类,让显卡、声卡、网卡发送数据

    class Demo1_PCI
    {
        public static void main(String[] args) 
        {
            VideaCard v1 = new VideaCard();
            v1.send();
            AudioCard a1 = new AudioCard();
            a1.send();
            NetCard n1 = new NetCard();
            n1.send();
        }
    }
    // 定义PCI接口
    interface PCI
    {
        public abstract void send();
    }
    
    class VideaCard implements PCI
    {
        public void send() {
            System.out.println("显卡发送数据");
        }
    }
    
    class AudioCard implements PCI
    {
        public void send() {
            System.out.println("声卡发送数据");
        }
    }
    
    class NetCard implements PCI
    {
        public void send() {
            System.out.println("网卡发送数据");
        }
    }

    2.实现不同引用类型对象的大小比较
    需求说明:学生类,新闻类,商品类虽然是完全不同的类,但是都具有比较的能力,比如可以比较两个学生的大小,但需要指定比较的依据是学号、姓名还是成绩等。
    实现思路及关键代码:
    将比较的能力定义为接口,让学生、新闻、商品类都实现该接口。
    1)定义接口Comparable,其中包含唯一的方法int compareTo(Object obj);返回值>0,表示大于,返回值=0,表示等于,返回值<0,表示小于。
    2)定义学生类,包括学号、姓名、年龄和分数,实现Comparable接口,按照分数倒序排列;
    3)定义新闻类,包括编号(int类型)、标题、内容和点击数,实现Comparable接口,按照编号正序排列;
    4)定义测试类,分别创建两个学生对象、新闻对象,进行比较并输出结果。

  • 相关阅读:
    如何使用ps技术批量操作图片???
    [2020.8.3]联想 K10(K10e70) Magisk ROOT 纯净无推广 一键刷机 K10e70_S206_170105
    [2020.8.3]联想 K6畅享版(L38082) Magisk ROOT 纯净无推广 一键刷机 ZUI_3.9.226
    [2020.8.3]联想 K5S(L38031) Magisk ROOT 纯净无推广 一键刷机 ZUI_3.9.188
    [2020.8.3]联想 K5(K350t) Magisk ROOT 纯净无推广 一键刷机 ZUI_3.1.244
    [2020.8.3]联想 K5 Pro(L38041) Magisk ROOT 纯净无推广 一键刷机 ZUI_11.1.099
    [2020.8.3]联想 K5 Pro(L38041) Magisk ROOT 纯净无推广 一键刷机 ZUI_5.0.188
    [2020.8.3]联想 K5 Play(L38011) Magisk ROOT 纯净无推广 一键刷机 ZUI_3.7.087
    [2020.8.3]联想 K5 Note(L38012) Magisk ROOT 纯净无推广 一键刷机 ZUI_3.9.269
    --- 测试
  • 原文地址:https://www.cnblogs.com/zhangzheng1989/p/9326249.html
Copyright © 2020-2023  润新知