精华内容
下载资源
问答
  • 下列关于对象的哪一种说法是正确的?请选择一个正确的答案。 (a)对象是可以对其进行实例化从而得到的东西。 (b)对象是的实例。 (c)对象是一种蓝本,据此可以创建抽象的具体实现。 (d)对象是指向属性的...

    相关面试题搜索:
    Java春招面试题之编程基础类(一)

    Java春招面试题之编程基础类(二)

    今天能给大家介绍一个下常见面试题:

    用自己的语言描述Java中的类和对象

    下列关于对象的哪一种说法是正确的?请选择一个正确的答案。

    (a)对象是可以对其进行实例化从而得到类的东西。

    (b)对象是类的实例。

    (c)对象是一种蓝本,据此可以创建抽象的具体实现。

    (d)对象是指向属性的引用。

    (e)对象是一种变量。

    考点:该面试题考察求职者对于Java类和对象的理解。

    出现频率:★★★

    【面试题解析】

    1.类

    在处理复杂事物的时候,用到的一种基本手段就是抽象。抽象的目的就是区别事物之间的本质和不同,面向对象编程(OOP)的实质就是利用类和对象来建立抽象模型。

    类表示了对象的类别,是创建对象的蓝本。建立一个事物的抽象模型,本质上就是表达该事物的性质和行为。使用类来建立抽象模型,是通过在类中定义变量和方法来实现的。

    类中定义的属性是一种可存储值的变量,该变量代表着事物的具体性质。类的对象所具有的行是由定义的方法来实现的。类中定义的变量和方法被称为类的成员。

    在项目开发中,类一般可以通过UML建模来表示,如图1.1所示。
    在这里插入图片描述

    图1.1中,定义了类Gun的成员,即类Gun的变量和方法。从UML图中可以看到,类定义了如下所示3个变量。

    caliber:是一个Double 类型的变量,表示Gun 类所抽象事物(枪)的口径。

    length:是一个Double 类型的变量,表示Gun 类所抽象事物(枪)的长度。

    gun_type:是一个字符串类型的变量,表示Gun类所抽象事物(枪)的类型,例如是手枪还是突击步枪。

    同时类中定义了如下所示3个方法。

    fire:定义了Gun 的开火行为,及fire 方法。

    maintenance:定义了Gun 的维护方法。

    Gun:定义了一个同类同名的构造方法。

    开发者可以通过UML生成代码工具,或者是手工在编辑器中建立图1.1中所示的类,如下所示:

    public class Gun {

    // 定义枪的口径
    public Double caliber;

    // 定义枪的长度

    public Double length;

    // 定义枪的类型

    public int gun_type;

    // 构造方法

    public Gun() {

    }

    // 带参数的构造方法

    public Gun(String name) {

    }

    // 开火的方法

    public void fire() {

    System.out.println(gun_type +" is fireing");

    }

    // 维护的方法

    public Boolean maintenance() {

    return true;

    }

    }

    2.对象

    对象是类的实例。对象在构造时以类为蓝本,创建对象的过程叫做实例化。对象是类所表示的抽象事物的具体实例。例如前面所讲述的Gun类,那么可以根据Gun类创建一个ak47的对象,即Gun的具体实现。

    对象可以使用UML来表示,如图1.2所示。
    在这里插入图片描述

    ak47是根据Gun类创建的一个对象,在Java程序中,可以使用如下代码创建一个Gun对象:

    ……

    public static void main(String[] args) {

    //建立一个Gun类对象,即Gun类的实例ak47

    Gun ak47=new Gun();

    //定义ak47的口径

    ak47.caliber=7.6;

    //定义ak47的长度

    ak47.length=57.8;

    //定义ak47的类型

    ak47.gun_type=“AK47”;

    //调用fire方法

    ak47.fire();

    }

    ……
    运行该示例,结果如下:

    AK47 is firing

    参考答案:(b)。

    以上内容来自面试的书籍《Java程序员面试秘笈》

    在这里插入图片描述

    此书已加入到VIP会员卡,只要购买VIP会员卡即可免费阅读上百本电子书,这张VIP卡除了免费让你读书,还有更多的权益等你来领,往下↓拉
    在这里插入图片描述

    阅读电子书的方法如下:

    打开CSDN APP(软件商城搜索“CSDN”即可找到哦)—>登录CSDN账号—>学习—>电子书

    在这里插入图片描述

    展开全文
  • 本节书摘来异步社区《Java程序员面试...下列关于对象的哪一种说法是正确的?请选择一个正确的答案。 (a)对象是可以对其进行实例化从而得到的东西。 (b)对象是的实例。 (c)对象是一种蓝本,据此可以创建抽...

    本节书摘来异步社区《Java程序员面试秘笈》一书中的第1章,第1.5节,作者:常建功,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    面试题5 用自己的语言描述Java中的类和对象

    下列关于对象的哪一种说法是正确的?请选择一个正确的答案。

    (a)对象是可以对其进行实例化从而得到类的东西。

    (b)对象是类的实例。

    (c)对象是一种蓝本,据此可以创建抽象的具体实现。

    (d)对象是指向属性的引用。

    (e)对象是一种变量。

    考点:该面试题考察求职者对于Java类和对象的理解。

    出现频率:

    【面试题解析】

    1.类

    在处理复杂事物的时候,用到的一种基本手段就是抽象。抽象的目的就是区别事物之间的本质和不同,面向对象编程(OOP)的实质就是利用类和对象来建立抽象模型。

    类表示了对象的类别,是创建对象的蓝本。建立一个事物的抽象模型,本质上就是表达该事物的性质和行为。使用类来建立抽象模型,是通过在类中定义变量和方法来实现的。

    类中定义的属性是一种可存储值的变量,该变量代表着事物的具体性质。类的对象所具有的行是由定义的方法来实现的。类中定义的变量和方法被称为类的成员。

    在项目开发中,类一般可以通过UML建模来表示,如图1.1所示。

    2c69d64175adc0fcf1b4d5106a5609717d42d207

    图1.1中,定义了类Gun的成员,即类Gun的变量和方法。从UML图中可以看到,类定义了如下所示3个变量。

    • caliber:是一个Double类型的变量,表示Gun类所抽象事物(枪)的口径。
    • length:是一个Double类型的变量,表示Gun类所抽象事物(枪)的长度。
    • gun_type:是一个字符串类型的变量,表示Gun类所抽象事物(枪)的类型,例如是手枪还是突击步枪。

    同时类中定义了如下所示3个方法。

    • fire:定义了Gun的开火行为,及fire方法。
    • maintenance:定义了Gun的维护方法。
    • Gun:定义了一个同类同名的构造方法。

    开发者可以通过UML生成代码工具,或者是手工在编辑器中建立图1.1中所示的类,如下所示:

    public class Gun {
        // 定义枪的口径
        public Double caliber;
        // 定义枪的长度
        public Double length;
        // 定义枪的类型
        public int gun_type;
        // 构造方法
        public Gun() {
        }
       // 带参数的构造方法
        public Gun(String name) {
        }
        // 开火的方法
        public void fire() {
          System._out_.println(gun_type +" is fireing");
        }
        // 维护的方法
        public Boolean maintenance() {
          return true;
        }
    }

    2.对象

    对象是类的实例。对象在构造时以类为蓝本,创建对象的过程叫做实例化。对象是类所表示的抽象事物的具体实例。例如前面所讲述的Gun类,那么可以根据Gun类创建一个ak47的对象,即Gun的具体实现。

    对象可以使用UML来表示,如图1.2所示。

    494e96418c1626522fafaa18ad7a6399af4a2116

    ak47是根据Gun类创建的一个对象,在Java程序中,可以使用如下代码创建一个Gun对象:

    ……
    public static void main(String[] args) {
         //建立一个Gun类对象,即Gun类的实例ak47
         Gun ak47=new Gun();
         //定义ak47的口径
         ak47.caliber=7.6;
         //定义ak47的长度
         ak47.length=57.8;
         //定义ak47的类型
         ak47.gun_type="AK47";
         //调用fire方法
         ak47.fire();
        }
    ……

    运行该示例,结果如下:

    AK47 is firing

    参考答案:(b)。

    本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

    展开全文
  • 1. 下列关于类的构造函数析构函数叙述中,不正确是________。A.类析构函数可以重载 B. 类构造函数可以重载C.定义一个类时,可以不显式定义构造函数 D. 定义一个类时,可以不显式定义析构函数分析:析...

    1. 下列关于类的构造函数和析构函数的叙述中,不正确的是________。

    A.类的析构函数可以重载

    B. 类的构造函数可以重载

    C.定义一个类时,可以不显式定义构造函数

    D. 定义一个类时,可以不显式定义析构函数

    分析:析构函数不返回任何值,没有函数类型,也没有函数参数。由于没有函数参数,因此它不能被重载。一个类可以有多个构造函数,但只能有一个析构函数。

    2. 下列说明中有关结构体定义的正确说法是________。

    A.不能指定其成员的权限 B.不能包含成员函数

    C.其成员缺省的权限为公有的 D.不能包含对象成员

    分析:C语言中的结构体只能包含数据,而在C++中的结构体实际上就是类,能包含数据也能包含函数,其成员也可指定公有、私有。区别在于其成员未声明权限时,默认权限是public,结构体内也可以包括对象成员。

    3. 一个类的析构函数________。

    A.是唯一的  B.允许重载   C.至多可有两个   D只能是缺省的

    4. 下列有关类和对象的说法中,正确的是________。

    A.类与对象没有区别

    B.要为类和对象分配存储空间

    C.对象是类的实例,为对象分配存储空间而不为类分配存储空间

    D.类是对象的实例,为类分配存储空间而不为对象分配存储空间

    分析:略。

    5. 假定AB为一个类的类名,则该类的拷贝构造函数的函数原型是        

    A.AB &(AB X);   B.AB (AB X)   C.AB (AB & X)  D.AB (AB * X)

    分析:拷贝构造函数,又称复制构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的形参必须是引用,但并不限制为const,一般普遍的会加上const限制。

    6. 下列各类函数中,         不是类的成员函数。

    A.构造函数

    B.析构函数

    C.友元函数

    D.拷贝构造函数

    7. 一个类的友元函数能够访问该类的          

    A.私有成员

    B.保护成员

    C.公有成员

    D.所有成员

    8. 下述静态成员的特性中,错误的是          

    A.说明静态数据成员时前边要加修饰符static

    B.静态数据成员要在类体外重新定义并进行初始化

    C.引用静态数据成员时,要在静态数据成员前加类名和作用域运算符

    D.静态数据成员不是所有对象共有的

    分析:静态数据成员是被类的所有对象共享,它不属于类的任何一个对象,它的作用域是类范围。静态数据成员在每个类对象中并不占有存储空间,它只是每个类中分配有存储空间,供所有对象公用。静态数据成员的值对每个对象都一样,但它的值可以被任何一个对象更新,从而实现了同一类的不同对象之间的数据共享。

    9. 如下程序定义了一个时钟类:时钟类具有时、分、秒属性,具有设置和显示时间属性的公共接口函数,请根据自己的理解在________处填上相应的语句,并写出其输出结果_______________。

    #include <iostream.h>

    class clock

    {

    public:

    void SetTime(int newh, int newm, int news);

    void ShowTime()

    {

    cout<<Hour<<":"<<Minute<<":"<<Second<<"\n";

    }

    private:

    int Hour, Minute, Second;

    };

    void  clock::SetTime(int newh = 0, int newm = 0, int news = 0)

    {

    _Hour=newh______________;

    _Minute=newm______________;

    _Second=news______________;

    }

    void main()

    {

    clock myclock;

    cout<<"first time set and output:\n";

    myclock.SetTime();

    myclock.ShowTime();

    cout<<"second time set and output:\n";

    clock  _*temp=&myclock______________;

    temp->SetTime(12, 56);

    temp->ShowTime();

    cout<<"third time set and output:\n";

    temp->SetTime(8, 30, 30);

    temp->ShowTime();

    }

    输出结果:

    first time set and output:

    0:0:0

    second time set and output:

    12:56:0

    third time set and output:

    8:30:30

    10.读程序,写结果。

    #include <iostream.h>
    class Point
    {
    public:
    Point(int xx = 0, int yy = 0)
    {
    X = xx; Y = yy;
    cout<<"调用构造函数\n";
    }
    Point(Point &p);
    int GetX()  { return X; }
    int GetY()  { return Y; }
    private:
    int X,Y;
    };
    Point::Point(Point &p)
    {
    X=p.X;
    Y=p.Y;
    cout<<"调用拷贝构造函数\n";
    }
    void  main()
    {
    Point A(3,4);    
    Point B(A);      
    cout<<B.GetX()<<endl;
    }


    输出结果:

    调用构造函数

    调用拷贝构造函数

    3

    展开全文
  • 1、下列关于面向对象编程的说法,正确的有: A、只要使用Java语言解决问题,就是在使用面向对象编程思想解决问题。 B、对象是个体,从一组具有相同属性类似行为的个体中可以抽象,以后凡是要创建对象,只需要...

    面向对象编程(一):类与对象 实训答案
    一、理解面向对象编程

    1、下列关于面向对象编程的说法,正确的有:
    
    A、只要使用Java语言解决问题,就是在使用面向对象编程思想解决问题。
    
    B、对象是个体,从一组具有相同属性和类似行为的个体中可以抽象类,以后凡是要创建对象,只需要根据类来创建,而不需要从0开始创建,这体现了面向对象编程。
    
    C、Java类的定义体现了封装性。
    
    D、接口是面向对象编程的一大特性
    
    E、要使用面向对象编程思想求解问题,首先要明确:待求解的问题涉及到的对象有哪几类,这些对象之间的相互关系如何。
    
    F、不具备继承特性的语言,不是真正意义上的面向对象编程语言。
    
    G、多态性就是一个对象存在多种不同的状态。
    
    2、以下关于面向对象编程的说法,正确的有
    
    A、面向对象编程是一种编程架构,它以类的设计为中心。
    
    B、面向对象编程中,对象和实例通常指的是一个意思。
    
    C、基于面向对象的思考问题的方式,是比基于面向过程的思考问题的方式更高层的抽象方式。
    
    D、一个类是对一批对象的抽象
    
    E、面向对象编程的主要工作是设计出可高度重用的类,由于程序中所需要的某些类往往已经由别人“造好了”,可以直接拿来用,因此,用好他人开发好的类,可以显著提高开发效率
    
    3、关于面向对象编程的三大特性的说法,正确的有
    
    A、类和对象体现抽象与具体的关系,是封装性的表现
    
    B、封装性使得我们在使用类时,只需要关注它所提供的外部接口,而无需深入了解其内部实现。
    
    C、继承性使得可以在已有的“类”的基础上,以最少的代码创建新的类。
    
    D、一个类中可以定义多个名称相同,参数类型不同的方法,这是多态性的唯一表现。
    

    答案:
    1.BCEF
    2.ABCDE
    3.BC

    二、类的定义与对象的创建
    程序描述 输入三角形的三个边的边长,求三角形的面积。
    本程序由两个源文件构成: Test.java:主类定义 Triangle.java:三角形类的定义 其中,Test.java中的代码如下:

    import java.util.Scanner;
    public class Test {
    	public static void main(String[] args) {		
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入三角形的三个边的长度:");
    		double sideA = sc.nextDouble();
    		double sideB = sc.nextDouble();
    		double sideC = sc.nextDouble();
    		
    		Triangle t=new Triangle(sideA,sideB,sideC);
    		System.out.printf("边长为(%.2f,%.2f,%.2f)的三角形面积为%.3f"
    				,t.getSideA(),t.getSideB(),t.getSideC()
    				,t.getArea());
    		sc.close();
    	}
    
    }
    

    Triangle.java

    import java.lang.Math;
    class Triangle{
        private double SideA;
        private double SideB;
        private double SideC;
        private double Area;
        public Triangle() {
        }
    
        public Triangle(double sideA, double sideB, double sideC) {
            SideA = sideA;
            SideB = sideB;
            SideC = sideC;
        }
    
        public double getSideA() {
            return SideA;
        }
    
        public void setSideA(double sideA) {
            SideA = sideA;
        }
    
        public double getSideB() {
            return SideB;
        }
    
        public void setSideB(double sideB) {
            SideB = sideB;
        }
    
        public double getSideC() {
            return SideC;
        }
    
        public void setSideC(double sideC) {
            SideC = sideC;
        }
    
        public double getArea() {
            Area = area(SideA,SideB,SideC);
            return Area;
        }
    
        public void setArea(double area) {
            Area = area;
        }
    
        public double area(double sideA ,double sideB,double sideC){
            double p = (sideA+sideB+sideC)/2;
            double area = Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));
            return area;
        }
    }
    

    三、理解构造方法

    1、以下关于构造方法的说法,正确的有:
    
    A、构造方法是使用new创建对象时调用的方法,通常用于对一个类的实例的各个数据成员进行初始化。
    
    B、在一个类的定义中,若没有包含构造方法的显式定义,则这种类是没有构造方法的。
    
    C、一个Java类至少有一个构造方法,当开发者在定义类是没有提供构造方法,Java系统会自动提供默认的构造方法。
    
    D、构造方法返回值为void
    
    E、使用new创建一个类对象的前提条件是,这个类已经创建好了。
    
    F、一个类的类体中可以定义多个构造方法,但一个类的实例在创建时,只能选择其中的一个构造方法加以调用。
    
    对于构造方法的理解,正确的有
    
    A、构造方法在外在表现形式上的特殊地方在于它与类名相同,由于其返回值约定为void,因此,通常定义时,省略void。
    
    B、构造方法是对象创建时调用的方法,通常用于执行对象内部的数据成员的一些初始化操作。
    
    C、若定义一个类时,没有提供构造方法的定义,则这个类是没有构造方法的类。
    
    D、只要在一个类中定义了一个构造方法,Java编译器便不会提供默认构造方法。
    

    答案:
    1.ACDEF
    2.ABD

    四、构造方法的运用
    任务描述
    本关任务:编写一个程序,使程序的输出满足测试结果的要求。
    程序包含两个文件:
    Test4.java:主类定义文件
    MyClass.java:MyClass类的定义文件
    Test4.java中的代码如下:

     public class Test4 {
        
        public static void main(String[] args) {
            
            MyClass m=new MyClass();
            m.showMemberInfo();
            m=new MyClass(24);
            m.showMemberInfo();
        }
        
    }
    

    class MyClass

      public class MyClass {
    	public int m1=2;
    	
    	public void showMemberInfo() {
    		System.out.printf("m1=%d\n",m1);
    	}
    	//begin
        public MyClass(){
            System.out.print("object constructing...\nconstructing finished!\n");
    
        }
    	public MyClass(int m1){
            this.m1 = m1;
        }
    	//end
    }
    

    五、根据要求完成类的定义
    任务描述
    本关任务:本程序可实现两个整数的值的交换。主类(Test)的代码已经给出,你只需要完成所需的类中的代码,使主类可以正常运行。以下是主类(Test.java)中的代码:

     import java.util.Scanner;
    
    public class Test {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner sc=new Scanner(System.in);
    		int a1=sc.nextInt();
    		int b1=sc.nextInt();
    		MyNumber numA=new MyNumber(a1);
    		MyNumber numB=new MyNumber(b1);
    		System.out.printf("a1=%d,b1=%d\n",numA.getNumber(),numB.getNumber());
    		MyNumber.swap(numA,numB);
    		System.out.printf("a1=%d,b1=%d", numA.getNumber(),numB.getNumber());
    		sc.close();
    	}
    
    }
    

    相关知识
    为了完成本关任务,你需要掌握:1.类的方法和对象方法,2.对象变量是对内存中的对象的引用。

    测试说明
    平台会对你编写的代码进行测试:

    测试输入:4 91
    预期输出:
    a1=45,b1=67
    a1=67,b1=45

    这里要从内存上理解,每次new生成的对象存放在不同的地址中,需要调用

     public class MyNumber {
        private int number;
    
        public MyNumber() {
        }
    
        public MyNumber(int number) {
            this.number = number;
        }
    
        public int getNumber() {
            return number;
        }
    
        public void setNumber(int number) {
            this.number = number;
        }
    
        public static void swap(MyNumber a, MyNumber b){
            int temp = a.getNumber();
            a.setNumber(b.getNumber());
            b.setNumber(temp);
        }
    }
    

    六、任务描述
    本关任务:编写一个能进行矩阵乘法运算的程序。
    A×B,当A的列数和B的行数相同时,能进行矩阵运算。
    本程序的主类源文件(Test.java)已经创建好了,其中代码如下:

    import java.util.Scanner;
    public class Test {
        public static Scanner sc = new Scanner(System.in);
        public static void main(String[] args) {
            System.out.println("请输入矩阵A的行列数(空格间隔)");
            int rowNum=sc.nextInt();
            int colNum=sc.nextInt();
            System.out.println("请逐行输入矩阵A的元素值(每输入一行回车一次,同一行相邻元素用空格分隔)");
            
            double[][] arrA = inputArray(rowNum, colNum);
            System.out.println("请输入矩阵B的行列数(空格间隔)");
            rowNum=sc.nextInt();
            colNum=sc.nextInt();
            System.out.println("请逐行输入矩阵B的元素值(每输入一行回车一次,同一行相邻元素用空格分隔)");
            double[][] arrB = inputArray(rowNum, colNum);
            
            Matrix matA = new Matrix(arrA);
            Matrix matB = new Matrix(arrB);
            // 执行矩阵乘法,关于矩阵乘法的定义,请参考线性代数相关知识或百度查询
            Matrix matC = matA.multiply(matB);
            // 输出矩阵乘法的结果,注:这里实际上隐含着调用matC.toString(),因此,Matrix要定义toString方法,返回矩阵的字符串表示
            System.out.println(matC);
            Test.sc.close();
        }
        /**
         * 输入一个二维数组,并返回这个数组的引用
         * 
         * @param row 行数
         * @param col 列数
         * @return 数组的引用
         */
        public static double[][] inputArray(int row, int col) {
            double[][] a = new double[row][col];
            for (int r = 0; r < row; r++) {
                for (int c = 0; c < col; c++) {
                    a[r][c] = sc.nextDouble();
                }
            }
            return a;
        }
    }
    

    相关知识
    为了完成本关任务,你需要掌握:1.类的定义2.类的成员和对象的成员。

    编程要求
    在右侧编辑器补充代码。

    测试说明
    平台会对你编写的代码进行测试,以下是某个用例下的测试结果画面:
    请输入矩阵A的行列数(空格间隔)
    3 2
    请逐行输入矩阵A的元素值(每输入一行回车一次,同一行相邻元素用空格分隔)
    1 2
    3 4
    5 6
    请输入矩阵B的行列数(空格间隔)
    2 2
    请逐行输入矩阵B的元素值(每输入一行回车一次,同一行相邻元素用空格分隔)
    1.4 45
    34 0
    [
    [69.400 45.000 ]
    [140.200 135.000 ]
    [211.000 225.000 ]
    ]
    Matrix.java

    public class Matrix {
        public double [][] arr;
        public Matrix() {
        }
    
        public Matrix(double[][] arr) {
            this.arr = arr;
        }
    
        public Matrix multiply(Matrix matB){
            Matrix matC = new Matrix();
            matC.arr = new double[this.arr.length][matB.arr[0].length];
            for(int i=0;i<this.arr.length;i++){
                for(int j=0;j<matB.arr[0].length;j++){
                    matC.arr[i][j] = 0;
                    for(int k=0;k<this.arr[0].length;k++){
                        matC.arr[i][j] += this.arr[i][k]*matB.arr[k][j];
                    }
                }
            }
            return matC;
        }
    
        public String toString(){
            String result = "[\n";
            for(int i=0;i<arr.length;i++){
                result+="[";
                for(int j=0;j<arr[0].length;j++){
                    result+=arr[i][j]+"00 ";
                }
                result += "]\n";
            }
            result+="]\n";
            return result;
        }
    }
    

    七、类之间的关系的UML图描述

    1、有关复杂的类的实现,说法正确的有
    
    A、复杂的类对象分解为简单的类对象的组合,这是实现复杂的类的方法之一
    
    B、如果一些类之间存在明显的继承关系,就可以使用继承来实现类的设计,这也是一种实现复杂的类的方法。
    
    C、分解与组合的方法,在代码上的表现往往就是:某个类的一些数据成员的数据类型为另外一些类
    
    D、我们要使用Java类库,只需要知道库中的类的用法,没必要知道这个类和其他类的关系。
    
    2、有关类的关系及其UML图的表示,说法正确的有
    
    A、UML图,仅用于描述一个类和他类之间的关系
    
    B、UML图,只针对Java语言,对其他编程语言的开发者,没有意义。
    
    C、继承关系、实现关系从代码外部接口就可以看出来,而组合、聚合、关联这三种关系,如果没有清晰的UML图,仅从类的外部接口代码,不好相互区分。
    
    D、类A组合于B,意味着,A类的对象创建后,其中包含着B类对象的创建,当A类对象被垃圾回收器回收时,其内部的B类对象也自动会被回收。
    
    E、关联关系比依赖关系要强,A关联于B,则A的定义中包含了B类的数据成员。A依赖于B,仅表明A中的某个方法的定义中用到了B。
    

    答案:
    1.ABC
    2.CDE

    八、包的定义与使用

    1、下列关于Java包的说法,不正确的有
    
    A、Java标准库、第三方的商业类库,都是按包的方式来管理众多的类
    
    B、Java标准库中的某些类,如Math类,在使用时,不必使用import语句导入,是因为这些类所在的包为匿名包
    
    C、开发大型应用程序时,利用包的机制管理好大量自定义的类,是一个值得推荐的做法
    
    D、用户声明的包可以分层次,例如“cn.guet”是一个具有2个层级的包,它要求在应用程序顶层目录下有对应的二级子目录:“cn\guet”,这个包下的类,例如cn.guet.ClassA,编译后对应的class文件,则不一定非要放到guet子目录下。
    
    E、同一个包中的类所在的源文件没有必要存入同一个目录,只需要文件开头有相同的package声明语句就可以了。
    
    2、下列关于Java包的用法,不正确的有
    
    A、多个源文件中开头有声明语句”package imagan.file;”,表示这些源文件中定义的类都隶属于imagan.file这个包。
    
    B、源文件“ClassA.java”和源文件“ClassB.java”中都有一条声明语句“package guet.myclass;”,且ClassA关联于ClassB,则在ClassA.java文件中必须有import guet.myclass.ClassB或 import guet.myclass.*语句。
    
    C、已知类classA位于cn包中,而classB位于cn.test包中,则在classA的定义中,要引用classB,可以使用“import test;”语句(test前面的cn.可以省略)。
    
    D、在某个源文件中要使用位于不同包中的两个类,而这两个类的类名是相同的,为了向编译器指明当前要使用的类,有必要在类名前加包名前缀。
    
    3、程序中要用到第三方Java扩展库中的某个类DemoClass,该类位于包guet.imagan中,则在需要用到该类的源文件中可以加入的语句,正确的有:
    
    A、
    package guet.imagan.DemoClass;
    
    B、
    import guet.imagan.*;
    
    C、
    from guet.imagan import DemoClass;
    
    D、
    import guet.imagan.DemoClass;
    

    答案:
    1.BDE
    2.BC
    3.BD

    九、类的外部访问权限的理解

    1、下列关于Java类的外部访问权限的说法,正确的有
    
    A、外部访问权限的合理设计,有利于类使用的安全性和方便性
    
    B、外部访问权限的控制,是通过public. protected. private等几个关键字来设置的
    
    C、某个类DemoClass的名称前没有加public关键字,则其他类都不能直接引用DemoClass
    
    D、加了private关键字的方法成员或数据成员,是不能在该成员所在的类体以外任何地方直接访问的,连当前类的子类也不能直接访问
    
    2、要设计一个名为“MyClass”的类,它包含数据成员“member1”和“member2”、方法成员“func1”和“func2”,希望:任何其他类(包括子类)都不能直接读写“member1”,只有同一个包中的类可以直接读写“member2”,子类不能继承“member2”;任何其他类都可以调用“func1”,而只有同一个包中的类以及MyClass的子类可以直接调用“func2”,则“MyClass”、“member1”、“member2”、“func1”、“func2”前面的权限控制关键字分别为
    
    A、
    public, 不加关键字,privatepublic, protected
    
    B、
    public, private, 不加关键字,protected, public
    
    C、
    public, protected, 不加关键字,public, private 
    
    D、
    public, private, 不加关键字,public, protected
    

    答案:
    1.ABD
    2.D

    十、基本数据类型的类包装

    1public class Test{
    public static void swap(Integer a,Integer b) {
            Integer c=a;
            a=b;
            b=c;
    }
        public static void main(String[]args){
            Integer a=3;
            Integer b=4;
            swap(a,b);
            System.out.println(a+”,”+b);
        }
    }
    请问上述代码的执行结果怎样?(请注意,通过这个例子,要总结出基本数据类型进行类封装后,对象变量到底表示的是值,还是对象的引用)。(A)
    
    A、
    3,4
    
    B、
    3,3
    
    C、
    4,4
    
    D、
    4,3
    
    2、以下Java代码正确的有
    
    A、
    Int a=5;
    
    B、
    Bool t=true;
    
    C、
    Byte a=123;Char b=‘A’;
    
    D、
    double a=10.34; Double b=a;
    
    E、
    Float a=3.1415f;
    
    3、以下有关字符串与数值间的相互转换的代码,正确的有
    
    A、
    int e=Integer.valueOf(1234);
    
    B、
    Float e= Float.valueOf(1234);
    
    C、
    String s1=4;
    
    D、
    String s1=String.valueOf(4);
    
    E、
    Double a=4.6;String s1=a.toString();
    

    答案:
    1.A
    2.DE
    3.ABDE

    十一、带可变参数的方法
    任务描述
    本关任务:根据程序的提示,补充完整代码。

    相关知识
    为了完成本关任务,你需要掌握:1.了解什么是可变参数2.如何使用可变参数。

    编程要求
    根据提示,在右侧编辑器补充代码,计算并输出任意多个输的均值。

    public class Test {
    	public static void main(String[] args) {
            //求两个数的均值
    		System.out.printf("%.2f\n",Test.getAve(2,3));
            //求三个数的均值
    		System.out.printf("%.2f",Test.getAve(2,3,4));
    	}
        //请在1、2处补充代码,不允许在其他地方修改或添加代码
    	public static double getAve(int ... x) {
            double sum = 0;
            for(int i = 0;i<x.length;i++){
                sum = sum + x[i];
            }
            return sum/x.length;
        }
    }
    

    1.这里给出我一些对new的理解,当你new之后,生成的对象是在不同的地址的,通过带参构造的new,调用同一个类的不同构造对象,数据不同。
    2.构造可以理解为一个箱子,保护里面的数据,里面的参数用private进行保护,调用的时候要用get,设置时用set。
    3.在idea中可以使用快捷键生成
    Alt+Insert
    在这里插入图片描述
    第一个是构造函数的快捷生成
    第四个是get和set的快捷生成
    第六个是toString()方法,要改自己改

    (单纯分享,希望过了的同学能在老师答疑时间去把不懂的地方问清楚,用辅导员的话来说,都是成年人了!想想自己以后工作问题,或者说,你的未来。我们客观一点,来到这里,是你曾经努力或者不努力的结果,但现在,我希望我们专业的同学能离开宿舍,离开小视频,离开峡谷,去图书馆,去四创,去那些能让你学习的地方。我们反思一下,我们为什么选到这个专业,或者说你本来就喜欢这个专业,觉得前景好,亦或许你是成绩不够,被迫选到这个,但我告诉你,学校教给你的是专业,出去人家要的是专长,其实都差不多的,你的未来,在你的手上,我们要用未来5年后的自己的眼光来看现在的自己,你努力了吗?不要跟我说什么你毕业不干这行,你以为全部考试过了你就能干这行?但至少,拿到毕业证和学位证是你现在该干的事,不是吗?)
    在此声明,我不是什么厉害的人,只是一个突然后悔曾经或者说高中不努力的普通人,写这些话也只是因为希望能有更多一起努力的人罢了,或许会有些非本校的朋友或者非本专业的朋友看到这些,希望不要取笑,毕竟,我们都是在为梦想不断努力奋斗的人,难道不是吗?

    展开全文
  • 2、关于类和对象的关系,下列描述正确的是(D)。 A.类和面向对象的核心 B.类是现实中事物的个体 C.对象是根据类创建的,并且一个类只能对应一个对象 D.对象描述的是现实的个体,它是类的实例 3、构造方法的作用是...
  • Java面向对象 练习

    2020-07-09 21:21:31
    选择 1、有关Java中的类和对象,以下说法错误的是 B 2、在java中,以下程序的运行结果是 A 3、下面代码运行的正确结果是 D ...9、在Java中,下列关于this的说法错误的选项是(多选) BC 编程 1、创建Person类和测试
  • 1.关于Java源代码文件,下列说法错误是? A.一个源文件最多只能包含一个顶层public定义 B.一个源文件可以不包含任何代码定义。即它是一个空文件,编译时不会产生编译错误,一个包含定义最小源文件内容仅为...
  • 继承派生复习

    2021-01-20 22:06:48
    继承和派生练习关于保护继承下列说法错误是保护继承特点是基类所有公用成员和保护成员都成为派生类保护成员派生类对象不能访问基类中任何成员派生类的对象可以访问基类公有成员保护继承派生类和私有继
  • 面向对象与C++试题.doc

    2013-12-16 20:49:17
    1、类和对象的关系可表述为:类是对象的 ,而对象则是类的 。 2、在C++中,三种继承方式的说明符号为 、 和 ,如果不加说明,则默认的继承方式为 。 3、如果只想保留公共基类的一个复制,就必须使用关键字 把这个...
  • 习题&面向对象-3

    2021-05-30 15:51:46
    1.下面关于java中类的说法哪个是不正确的?(C) A.体中只能有变量定义成员方法的定义,不能有其他语句。 B.构造函数是中的特殊方法 C.一定要声明为 public的,才可以执行 D.一个java文件中可以有多个class...
  • PAGE PAGE 1 [模拟] 四级软件测试工程师分类模拟45 选择题 第1题 下列关于面向对象集成测试的说法中正确的是( ) A.大突击集成是面向对象集成测试最常用且最有效的方法 B.自底向上集成自顶向下集成都需要为集成测试...
  • PAGE PAGE 1 [模拟] 四级软件测试...数据库模式 参考答案D 第2题 关于面向对象的设计下列说法错误的是( ) A.面向对象的设计以面向对象分析为基础归纳出 B.建立结构或进一步构造成类库实现分析结果对问题空间的抽
  • jQuery基础题

    2020-10-14 20:45:41
    1.下列关于CSS选择器说法错误是 C 2下列关于链式语法说法错误是 ACD 3.下列说法正确是 BCD 4.B 5.下列关于triggertriggerHandler两个方法,说法错误是 AD 6.下列关于Chosen选择框插件说法正确...
  • day15作业

    千次阅读 2020-04-08 19:00:42
    一、单选题 关于面向过程和面向对象,下列说法...2. 关于类和对象的关系,下列描述正确的是(D)。 A. 类和面向对象的核心 B. 类是现实中事物的个体 C. 对象是根据类创建的,并且一个类只能对应一个对象 D. 对...
  • 3、下列关于类和对象的描述中,错误的是() A.一个类只能有一个对象 B.对象是类的具体实例 C.类是对某一类对象的抽象 D.类和对象的关系是一种数据类型与变量的关系 4、下列说法正确的是() A.在类方法中可用this来...
  • C++理论复习题 SCUT 自动化学院 自动化09-34班 继承和派生 单选题 1. 关于保护继承下列说法错误是 A... 保护继承派生类和私有继承派生类对基类成员访问属性是相同 [答案] C 2. 关于私有继承下列说法错误是 A.
  • 千锋学习32天:IO

    2020-03-17 23:28:02
    一、(file)以下关于file类说法争取是(abc) A 一个file,对象代表了操作系统中一个文件或者文件夹 B 可以使用file,对象创建删除一个文件 C 可以使用file,对象创建删除一个文件夹 D 当一个file,对象被...
  • 笔试题

    2015-12-08 17:37:49
    下列关于对象的哪一种说法是正确的?...主要考察了对类和对象的理解 类是对象的类别,是创建对象的蓝本,使用类来建立抽象模型,是通过在类中定义变量和方法来实现的。 类中定义属性是一种可存储值的变量,该变量...
  • 作业选择题1.以下语句中关于Java构造方法的说法错误的是( )2.在Java中,以下程序编译运行后的输出结果为( )3.在Java中关于静态方法,以下说法中正确的... 类和对象的关系3. 构造方法的作用和特征4. this关键字的作用...
  • 1、下列关于内部类的说法,正确的是(ABD) A .其他不可以用某个的内部声明对象。 B .内部字节码文件的名字格式是“外嵌类名$内部类名”。 C .内部体可以声明变量和类方法。 D .内部在成员位置上...
  • 必优面试题

    2018-07-10 17:05:05
    1. 下列关于面向对象的程序设计的说法中,不正确的是(c)A.”对象”是现实世界的实体或概念在计算机逻辑中的抽象表示B.在面向对象程序设计方法中,其程序机构是一个的集合各类之间以继承关系联系起来的结构C....
  • 部分真题整理3

    2015-08-21 21:10:32
    2、下列关于java抽象类的说法哪个正确?(D) 某个抽象的父类是抽象,则这个子类必须重载父类的所有抽象方法 接口抽象是同一回事 可以用抽象直接去实例化创建对象 一个只能继承一个抽象 解析: ...
  • 牛客网day22

    2018-11-23 16:25:20
    1.下列关于java抽象类的说法哪个正确? 某个抽象的父类是抽象,则这个子类必须重载父类的所有抽象方法//接口性质 接口抽象是同一回事 可以用抽象直接去实例化创建对象//抽象不可实例化 一个只能...
  • Java 经典练习题_Day06

    2018-10-23 18:35:00
    1.下列各项中关于面向对象及面向过程的说法错误的是:(BDE)  A. 面向对象要重点关注的是流程中的每一个步骤  B. 面向对象是基于面向过程的  C. 面向对象一定是优于面向过程的  D. 如果事务相对复杂,可以...
  • 41. 下列正确选项是( )。 A、继承是创建一个具有别的类的属性行为类的能力 ...42. 下列关于C++语言发展说法错误是( )。 A、C++语言起源于C语言 B、C++语言最初被称为“带类的C” C、在1980年C++.
  • javase基础题

    2019-03-31 20:36:45
    (单选题)以下关于static的说法正确的是?a A.static不能修饰的构造函数 ...(多选题)下列关于反射的说法错误的是?abc A.可以通过newlnstance()来创建一个字节码对象 B.可以通过 Class clz = Class...
  • 关于类的序列化,下列说法哪些是正确:D A .类序列化与serialVersionUID毫无关系。 B .如果完全不兼容升级,不需要修改serialVersionUID值。 C .POJO类serialVersionUID不一致会编译出错。 D .POJO类...
  • OC-1面试题

    2016-01-15 09:24:22
    2.关于类和对象的概念,下列属于对象的是() A、奥迪A4L B、保龄球 C、蓝鸥CEO辉哥 D.西红柿 3.OC中包含一个自定义的头文件应该使用() A、#include “” B、#include 4.对于OC中的方括号 “[]”的...
  • MapReduce相关问题

    千次阅读 2020-05-30 11:13:44
    1.在高阶数据处理中,往往无法把整个流程写在单个MapReduce作业中,下列关于链接MapReduce作业的说法,不正确的是?()答案:A A. ChainReducer.addMapper()方法中,一般对键/值对发送设置成值传递,性能好且安全...

空空如也

空空如也

1 2 3 4
收藏数 73
精华内容 29
关键字:

下列关于类和对象的说法