面向对象考核题总结

本文详细解答了Java编程中的接口特性、抽象方法位置、类的作用、代码执行顺序,以及关键概念如静态代码块、构造方法的使用,并通过实例代码展示了运行结果。重点讲解了类的继承与初始化顺序,适合复习巩固Java基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、选择题

1.接口中的方法默认都是静态的(√);
2.抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法(√);
3.java类可以作为类型定义机制和数据封装机制(√);
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 Test2 {
    public static void main(String[] args) {
        A ab = new B();
        ab = new B();
    }
}


答案:1a2b2b

原因分析:

创建对象时构造器的调用顺序是:先初始化静态成员,然后调用父类构造器,再初始化非静态成员,最后调用自身构造器。


二、简答题

1.Java 中的几种基本数据类型是什么?默认值分别是多少?各自占用多少字节呢?对应的包装类型是什么?

在这里插入图片描述在这里插入图片描述

2.简述==与equals的区别

在这里插入图片描述

3.构造方法有哪些特点?构造器(constructor)是否可被重写(override)?为什么?

特点:

  1. 名字与类名相同。
  2. 没有返回值,但不能用 void 声明构造函数。
  3. 生成类的对象时自动执行,无需调用。

不可以。重写是针对在子类中可以继承父类的方法,而构造器根本不能被子类继承,不满足重写的条件。

4.this和super关键字的作用?

this是对象内部指代自身的引用,同时也是解决成员变量和局部变量同名问题;this可以调用成员变量,不能调用局部变量;this也可以调用成员方法,但是在普通方法中可以省略this,在构造方法中不允许省略,必须是构造方法的第一条语句。,而且在静态方法当中不允许出现this关键字。
super代表对当前对象的直接父类对象的引用,super可以调用直接父类的成员变量(注意权限修饰符的影响,比如不能访问private成员)

5.成员变量与局部变量的区别有哪些?

在这里插入图片描述

6.Java中& 和 && 的区别?

共同点:都具有逻辑运算符与的功能
不同点: &&:具有短路的效果,当有两个条件的时候如果第一个条件不成立那么就不会判断第二个条件。

7.简述重载和重写的区别

重载 发生在同一个类中(或者父类和子类之间),方法名必须相同,参数类型不同、个数不 同、顺序不同,方法返回值和访问修饰符可以不同。

重写 重写发生在运行期,是子类对父类的允许访问的方法的实现过程进行重新编写。

  1. 返回值类型、方法名、参数列表必须相同,抛出的异常范围小于等于父类,访问修 饰符范围大于等于父类。
  2. 如果父类方法访问修饰符为 private/final/static 则子类就不能重写该方法,但是 被 static 修饰的方法能够被再次声明。
  3. 构造方法无法被重写

总结

这次考核,考到知识点,个人感觉是挺细致的,除了没学到的内容,其余的内容都接触过,做错的题中,很多都是,知识点没记得很牢固,就是那种学过但是又想不起来的感觉,总结一下就是,学习之后掌握的效果一般,以后还是要继续努力的,加油加油!!!

一.阅读程序 1. #include class CSample { int i; public: CSample() { i=1; cout<<i++; } void disp() { cout<<++i; } ~CSample() { cout<<i++; } }; void main() { CSample s; s.disp(); } 2. #include class Sample { private: int x; public: Sample(){ cout<<(x=0);} Sample(int i,int j) {cout<<(x=i+j);} ~Sample(){cout<<x;} }; void main() { Sample *p1=new Sample, *p2=new Sample(3,4); delete p1; delete p2; } 3. #include class Sample { public: Sample(){} Sample(int a){x=a;} Sample(Sample &a){x=a.x++;} void disp(){cout<<x++;} private: int x; }; void fun(Sample &s1, Sample s2) { s1.disp ();s2.disp (); } void main() { Sample s1(2),s2=s1; fun(s2,s1); s1.disp ();s2.disp (); } 4. #include class Sample { int x; public: Sample(){x=0;} Sample(int a) {cout<<(x=a);} ~Sample() { cout<<++x; } void disp() { cout<<x; } }; void main() { Sample s1(2); s1.disp (); s1.~Sample (); } 5. #include class Sample { int x; public: Sample(){cout<<(x=0);} Sample(int i){cout<<(x=i);} ~Sample(){cout<<x<<endl;} void disp(){cout<<x;} }; void main() { Sample s(3); int i=0; if(i=0) { Sample s; s.disp (); } } 6. #include class Sample { public: Sample(){cout<<"Constructor"<<endl;} ~Sample(){cout<<"Destructor"<<endl;} }; void fn(int i) { static Sample c; cout<<"i="<<i<<endl; } void main() { fn(10); fn(20); } 7. #include class Sample { int n; public: Sample(int i){n=i;} friend int add(Sample &s1,Sample &s2); }; int add(Sample &s1,Sample &s2) { return s1.n+s2.n; } void main() { Sample s1(10),s2(20); cout<<add(s1,s2)<<endl; } 8. #include class B; class A { int i; public: int set(B&); int get(){return i;} A(int x){i=x;} }; class B { int i; public: B(int x){i=x;} friend A; }; int A::set(B &b) { return i=b.i; } void main() { A a(1); B b(2); cout<<a.get()<<","; a.set(b); cout<<a.get()<<endl; } 9. #include float f(float x, float y) { return x+y; } int f(int x, int y) { return x+y; } void main() { float a, b, c; a = b = 50.5; c = f(a, b); cout << c; } 10. #include int max(int x, int y) { if(x > y) return x; else return y; } int max(int x, int y, int z) { return max(x, max(y, z)); } void main() { int a = 3, b = 4, c = 5, d = 0; d = max(a, b); cout << d; } 11. #include int p(int x = 4, int y = 5) { return x + y; } void main() { int a = 3, b = 4, c = 0; c = p(b); cout << c; } 12. #include int add(int x, int y = 8); void main() { int a = 6; cout << add(a, add(a)) << endl; } int add(int x, int y) { return x + y; } 13. #include int p(int x = 4, int y = 5, int z = 6) { return x + y + z; } void main() { int a = 3, b = 4, c = 5; c = p(b, a); cout << c; } 14. #include int p(int x = 4, int y = 5, int z = 6) { return x + y + z; } void main() { int a = 3, b = 4, c = 0; c = p(b, c); cout << c; } 15. #include int n = 1; void Fun(); void main() { n++; Fun(); if(n > 0) { int n = 5; cout<< "Block:n=" << n << ","; } cout << "Main:n = " <<n<< endl; } void Fun() { int n = 10; cout << "Fun:n="<<n << ","; }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值