总结

作者: AnRudy | 来源:发表于2016-09-25 21:46 被阅读0次

    1,重载和重写的区别:
    重载:允许存在一个以上的同名函数,只要它们的参数类型不同即可。
    重写:当子类继承父类,沿袭了父类的功能到子类中,子类虽具备该功能,但是功能内容不一致,这是使用覆盖的特性,保留父类的功能定义,并重写功能内容。
    2,单例模式:
    public class Singleton {
    private static SingleTon instance;
    private Singleton() { }
    public static synchronized Singleton getInstance(){
    if(instance == null){
    instance = new Singleton();
    }
    return instance;
    }
    }
    3,特殊关键字: final
    可以修饰类,函数,变量;
    被final 修饰的类不可以被继承。为了避免被继承,被子类复写。
    被final 修饰的方法不可用被复写。
    被final 修饰的变量是一个常量,只能赋值一次。
    内部类定义在类中的局部位置上时,只能访问该局部被final修饰的
    局部变量。
    4,异常:
    try{}catch{}finally{}
    当执行到System.exit(0)时,finally不会执行。
    5,常见Runtime异常:
    ClassCastException,IllegalArgumentException,
    NullPointerException
    6,static特点:
    随着类的加载而加载,优先于对象存在,被所有对象所共享,可以直接被类所调用,static是一个修饰符,用于修饰成员。
    7,构造代码块:
    作用:给对象进行初始化,对象一建立就运行,而且优先于构造函数执行,
    和构造函数的区别:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化,构造代码块中定义的是不同共性的初始化内容。

    8,抽象类的特点:
    抽象方法一定在抽象类中。
    抽象方法和抽象类都必须被abstract关键字修饰。
    抽象类不可用用new创建对象,因为调用抽象方法没有意义。
    抽象类中的抽象方法要被使用,必须由子类复写所有的抽象方法后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。强迫子类复写,强迫子类做一些事。
    抽象类可以不顶用抽象方法,如果不定义抽象方法,那么抽象类的功能就是为了不让该类建立对象。
    9,接口的特点:
    接口是对外暴露的规则。
    接口是程序的功能扩展。
    接口可以多实现。
    类与接口直接是实现关系,而且类可以继承一个类的同时实现多个接口。
    接口与接口之间可以有继承关系,可以多继承。
    因为接口没有方法体,不会存在两个父类出现同一个方法但是方法体不同的情况,不会引起冲突。
    10,接口和抽象类的异同:
    相同点:都是不断向上抽取而来的,不可用被实例化
    不同点:抽象类需要被继承,而且只能单继承,接口需要被实现,而且可以多实现。抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法。接口只能定义抽象方法,必须由子类实现。抽象类的继承是 is a 关系,在定义该体系的基本共性内容。接口的实现是like a 关系,在定义体系额外功能。
    11,继承
    子类的实例化过程:
    结论:子类的所有的构造函数,默认都会访问父类中空参数构造函
    数,因为子类中每一个构造函数内的第一行都有一句隐式的super() ;
    当父类中没有空参数的构造函数时,子类必须手动通过super或者
    this语句形式来指定要访问的构造函数。
    当然:子类的构造函数第一行也可以手动指定this语句来访问本类
    中的构造函数,
    子类中至少会有一个构造函数会访问到父类中的构造函数。
    12,创建线程的两种方式:
    1,继承Thread类
    定义类继承Thread;
    复写父类中的方法,目的:将自定义代码存储在run方法
    中,让线程运行。
    调用线程的start方法,该方法有两个作用:启动线程,调用run方法
    2,实现runnable接口:定义类实现runnable方法,覆盖runnable接口中run方法,通过Thread类建立线程对象,将runnable接口的子类对象作为实际参数传递给thread类的构造函数。调用Thread类的start方法开启线程并调用runnable接口子类的run方法。

    实现方式和继承方法有什么区别:
    1,实现方式相比继承方式的好处:避免了单继承的局限性,在定义线程时,建议使用实现方式。
    2,存放代码的位置不一样:
    继承Thread,线程代码存放Thread子类的run方法中,实现runnable,线程代码存放在接口的子类的run方法。
    3,实现runnable接口的好处:
    将线程的任务从线程的子类中分离出来,进行了单独的封装,按照面向对象的思想将任务的封装成对象。避免了java单继承的局限性。

    13,同步的两种表现形式:同步代码块,同步函数。

    14,wait和sleep的区别:wait可以指定时间也可以不指定。sleep必须指定时间。在同步中,对cpu的执行权和锁的处理不同。

    15,StringBuffer和StringBuilder的区别:
    StringBuffer是线程同步(安全),如果是单线程,效率就比较低
    StringBuilder是线程不同步。

    16,Collection:单列集合
    a,List和set:
    list元素是有序的,元素可以重复,因为该集合体系有索引
    set元素是无序的,元素不可用重复
    b,List常见的三个子类:
    ArrayList,LinkedList,Vector
    17,Map:双列集合
    a,常见子类:hashtable,hashmap,treemap

    相关文章

      网友评论

          本文标题:总结

          本文链接:https://www.haomeiwen.com/subject/bibfyttx.html