面向对象知识点总结(练习题)

1.类里面可以有什么?(5分)
变量,代码段,方法,内部类,this,super,常量
2.extends是什么?目的是什么?(5分)
继承关键字,代码的重用
3.谈谈你对final的理解.(5分)
Final是最终的,不可更改的,final修饰的类不能被继承,final修饰的成员方法不能被覆写,final修饰的静态变量是常量,成员变量和局部变量不能二次赋值 注意:继承指的是成员属性,只有成员属性可以被继承,堆内存继承
4.abstract和interface的区别?(5分)
Abstract 是修饰符,abstract修饰的类是抽象类,修饰的方法是抽象方法,抽象类中不能创建实例化对象,但是有构造方法,用于子类创建对象调用,并且抽象类中可以没有抽象方法,抽象方法一定在抽象类中. 一个非抽象类继承一个抽象类需要实现所有的抽象方法,一个抽象类继承一个抽象类需要继承0~N个抽象方法.抽象类只能被继承
interface是实现接口关键字,是定义接口的关键字,用interface声明的类是接口,接口中只有抽象方法和常量并且public static 和abstract可以省略,默认就是 ,接口中没有构造方法,也不能被创建实例化对象 注意:类和类之间单继承,接口之间多继承,类和接口之间多实现

5.Student s = new Student(); 这一句话在内存中会有怎么的操作?(5分)
1.加载student类到静态代码段中,然后new在堆内存开辟空间,调用构造的方法,对堆内存对象初始化,构造方法执行完弹栈,把堆内存内存地址返回给s
6. Override和Overload的区别?(5分)
Override是方法覆写:有继承关系的体系中,方法名,参数列表,返回值必须相同,不能比原有的方法有更低的访问权限,不能比原有的方法有更宽泛的异常
Overload方法的重载:方法名相同,参数列表不同(个数不同和类型不同)

7.java面向对象的特性?(5分)
封装,继承,多态,抽象
8.javaJVM特性?(5分)
多线程,跨平台,垃圾自动回收,面向对象
9.什么是多态?多态发生在什么地方?什么时候可以发生多态?(5分)
父类引用指向子类对象,发生在有变量的地方,发生在赋值的时候
10.类与类之间的关系是什么?(5分)
继承
实现
依赖
关联
聚合
组合

11.什么是单例模式?请用代码表示出来.(10分)
目的:让一个类只能被实例化一次,
1.构造方法私有化,无法让外部通过构造方法创建对象,
2.创建一个公共的,静态的,创建当前类对象的方法
3.创建一个静态变量用来保存实例化之后的对象引用
12. 给出下面代码段, 哪行将引起一个编译时错误?(10分)

  1. public class Test {
  2. int n = 0;
  3. int m = 0;
  4. public Test(int a) {m=a; }
  5. public static void main(String arg[]) {
  6. Test t1,t2; 
    
  7. int j,k; 
    
  8. j=3; k=5; 
    
  9. t1=new Test(); 
    

//构造方法有参数,所以默认的无参构造就没有了
10) t2=new Test(k);
11) }
12) }
A. 行1 B. 行4 C. 行6 D. 行9

13.下面程序中类ClassDemo中定义了一个静态变量sum,分析程序段的输出结果。(10分)
class ClassDemo {
public static int sum=1;
public ClassDemo() {
sum = sum + 5;
}
}
public class ClassDemoTest{
public static void main(String args[]) {
ClassDemo demo1=new ClassDemo();
ClassDemo demo2=new ClassDemo();
System.out.println(demo1.sum);
System.out.println(demo2.sum);
}
}
//静态变量所有对象共有的属性和值,所以每次调用都增加一次,所以输出的都一样
A. 0 B. 6 11 C. 11 11 D. 2

  1. 阅读以下代码,并指出哪里有错误.(10分)
    public class A{
    public static void main (String [] args){
  1.        A a1 = new A(10);
    
  2.        A a2 = new A();
     }
    

//不是构造方法
//所以构造方法还是无参的
3) public void A(int i){
4) System.out.println( “我是构造方法”+i );
}
}
A. 1 B. 2 C. 3 D. 4

  1. 阅读以下代码,并说出输出顺序为多少.(10分)
    public class A{
    int i;
    public static void main (String [] args){
    A a = new A();
    a.m1();
    //返回的时候a还是默认值0
    a.m1(a);
    //
    System.out.println( a.i );
    }
    public void m1(){
    A a = new A();
    a.i = 1;
    a.i = 100;
    //1
    100=100

        System.out.println( a.i );
    }
    public void m1(A a ){
        a.i++;
        System.out.println( a.i+1 );
    }
    

    }
    16 下面是一个类的定义,请将其补充完整:
    class Student__ {
    String name;
    int age;
    Student(__String name, int a){
    this.name = name;
    age = a;
    }
    }

发布了24 篇原创文章 · 获赞 0 · 访问量 402

猜你喜欢

转载自blog.csdn.net/qq1317121361/article/details/105051293
今日推荐