• 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.

    以下代码中错误的语句是(   A  )。(选择一项)

    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的抽象类和抽象方法说法正确的是( BC   )。(选择二项)

    A

    抽象类中可以含有0个或多个抽象方法//

    B.

    抽象类中不可以有构造方法

    C.

    一个类中若有抽象方法,则这个类必为抽象类

    D.

    子类必须重写父类所有的抽象方法

     

    5.

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

    A

    abstract类中可以没有抽象方法

    B.

    abstract类的子类也可以是抽象类

    C.

    abstract方法可以有方法体

    D.

    abstract类可以创建对象

     

    6.

    以下选项可替换题目中//add code here而不产生编译错误的是( B,C )。(选择项)

     

    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.

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

    A.

    匿名内部类可以实现多个接口,或者继承一个父类

    B.

    匿名内部类不能是抽象类,必须实现它的抽象父类或者接口里包含的所有抽象方法*

    C.

    匿名内部类没有类名,所以匿名内部类不能定义构造方法*

    D.

    匿名内部类可以直接访问外部类的所有局部变量//

     

    二、 判断题(共20个题目,总计10分)

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

     

    三、 简答题

    1. final和abstract关键字的作用。

    fina关键字的作用:

    1.被final修饰的类不能被继承

    2.被final修饰的变量,变成了常量,只能被赋值一次,不能更改

    3.被final修饰的方法,方法不能被重写

    abstract关键字的作用:修饰 抽象类和抽象方法

    1. 接口和抽象类的联系和区别。

    成员区别
    抽象类(和普通类相比,只是可以多定义了抽象方法而已)
    成员变量:可以变量,也可以常量
    构造方法:有
    成员方法:可以抽象,也可以非抽象
    接口:成员变量:只可以常量
       构造方法:无
       成员方法:只可以抽象
    B:关系区别

    类与类:继承,单继承,多层继承

    类与接口:实现,单实现,多实现
    接口与接口多继承:继承,单继承,
    设计理念区别
    抽象类 被继承体现的是:"is a"的关系.抽象类中定义的是该继承体系的共性功能
    接口  被实现体现的是:"like a "的关系.接口中定义的是该继承体系的扩展功能.

    1. 内部类的类型及其特点。

    内部类的主要类型:静态内部类、成员内部类、局部内部类、匿名内部类

    静态内部类是指被声明为static的内部类,不能访问外部类的普通成员变量,只能访问外部类中的静态成员变量和静态方法。

    去掉关键字static就是成员内部类,可以自由的引用外部类的属性和方法。

    局部内部类是指定义在一个代码块内的类,作用范围为其所在的代码块。局部类类似于局部变量一样,不能被public、protected、private以及static修饰,只能访问方法中定义为final类型的局部变量。

    匿名内部类,是一种没有类名的内部类,不使用关键字class、extends、implements,它必须继承其他类或实现其它接口。

      1. 介绍Java垃圾回收机制。

    一、 编码题

    1. 编写程序描述兔子和青蛙

    需求说明:使用面向对象的思想,设计自定义类描述兔子和青蛙。

    实现思路及关键代码

    1) 分析兔子和青蛙的共性

    2) 根据共性,定义抽象的动物类

    属性:名字、颜色、类别(哺乳类、非哺乳类)

    方法:吃饭,发出叫声

    3) 根据青蛙会游泳 抽象游泳的接口

    方法:游泳

    4) 定义兔子继承动物类,青蛙继承动物同时实现游泳接口

    程序运行结果如图所示。

    public class Test1_Animal{
        public static void main(String[] args) {
        Rabbit r=new Rabbit("兔子","黑色的","哺乳类");
        r.cry();
        r.eat();
        System.out.println("------------");
    
        Frog f=new Frog("青蛙","绿色","哺乳类");
        f.cry();
        f.eat();
        f.swim();
        }
    }
    
    abstract class Animal {
          String name;
          String color;
          String sort;
    
        public Animal(){}
        public Animal(String name,String color,String sort){
            this.name=name;
            this.color=color;
            this.sort=sort;
        }
    
        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 setSort(String sort){
            this.sort=sort;
        }
        public String getSort(){
            return sort;
        }
    
        public abstract void eat();//吃饭
        public abstract void cry();//
    }
    
    interface Swimming {   //抽象游泳的接口
        public abstract void swim();
    }
    
    class Rabbit extends Animal {//兔子
        public Rabbit(){}
        public Rabbit(String name,String color,String sort){
            super(name,color,sort);
        }
    
        public void eat(){//吃饭
            System.out.println(name+"是"+sort+",爱吃胡萝卜");
        }
        public void cry(){//
            System.out.println("那只"+color+"的,名叫美人的"+name+"正在叽叽的叫");
        } 
    }
    
    class Frog extends Animal implements Swimming {//青蛙
        public Frog(){}
        public Frog(String name,String color,String sort){
            super(name,color,sort);
        }
    
        public void eat(){//吃饭
            System.out.println(name+"是"+sort+",爱吃昆虫");
        }
        public void cry(){//
            System.out.println("那只"+color+"的,名叫大兵的"+name+"正在呱呱的叫");
        } 
        public void swim(){
            System.out.println("虽然不是鱼,但"+name+"也是泳坛高手");
        }
    
    }
    1. 编写程序描述影视歌三栖艺人

    需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人。

    实现思路及关键代码

    1) 分析影视歌三栖艺人的特性

    a) 可以演电影movie

    b) 可以演电视剧TV

    c) 可以唱歌sing

    2) 定义多个接口描述特性

    a) 演电影的接口-----方法:演电影

    b) 演电视剧的接口-----方法:演电视剧

    c) 唱歌的接口-----方法:唱歌

    3) 定义艺人类实现多个接口

    程序运行结果如图2所示。

    class Test2_Artist {//artist艺人
        public static void main(String[] args) {
            Artist a=new Artist("马素素");
            System.out.println("大家好!我是"+a.getName());
            a.movie();
            a.tv();
            a.sing();
        }
    }
    
    interface Movie {   
        public abstract void movie();
    }
    interface Tv {   
        public abstract void tv();
    }
    interface Sing {   
        public abstract void sing();
    }
    
    class Artist implements Movie,Tv,Sing {
        private String name;
        public Artist(){}
        public Artist(String name){
            this.name=name;
        }
    
        public void setName(String name){
            this.name=name;
        }
        public String getName(){
            return name;
        }
    
        public void movie(){
            System.out.println("我能演电影");
        }  
        public void tv(){
            System.out.println("我能演电视剧");
        }
        public void sing(){
            System.out.println("我会唱歌");
        }
    }
  • 相关阅读:
    1、嵌入式Linux开发环境搭建
    JAVA_SE基础——1.JDK&JRE下载及安装
    数组
    Java方法的概述
    Java流程控制
    初识Java
    windows常用的快捷键和dos命令
    window10 Java JDK环境变量配置
    jQuery学习 (实现简单选项卡效果练习test)
    jQuery学习 (实现内联下拉菜单效果(一个小test)
  • 原文地址:https://www.cnblogs.com/wty1994/p/9325606.html
Copyright © 2020-2023  润新知