java核心知识点

来源:互联网 发布:java new date 格式化 编辑:程序博客网 时间:2024/05/21 09:33

interface 接口

  • 接口和抽象类的相同点
    A:都代表系统的抽象层
    B:都不能被实例化
    C:都能包含抽象方法
  • 两大区别:
    A:在抽象类中可以为部分方法提供实现(实例方法),但接口中不允许有实例方法,在抽象类中增加新的实例方法不会对子类造成影响,因为子类不必实现(覆盖)这些新方法,但接口中只能增加抽象方法,增加新方法后,子类要么去实现(覆盖)这些新方法,要么把自己改为抽象类.   
  • B:站在子类的角度看,一个类只能继承一个抽象父类,但可以实现多个接口
  • 什么时候用接口什么时候用抽象类?
    1,接口具有稳定性,一旦制定不能随意修改
    2,抽象类用于定制系统中的扩展点
  • 接口相关的6种设计模式:
    定制服务模式,适配器模式,默认适配器模式,代理模式,标识类型模式,常量接口模式

----------------------------------------------

  • overload 方法重载
    重载的三个必要条件,A参数个数不同 B参数类型不同 C参数顺序不同
    重载的方法可以有以下特征:在方法名相同的情况下A,返回类型可以不同,B,权限修饰符可以不同
  • override 方法覆盖
    覆盖是子类对父类的方法进行重写
    覆盖时注意事项:
    A方法名,参数个数,参数顺序,参数类型,返回类型必须与父类方法一致
    B子类方法不能缩小父类方法的访问权限
    C子类方法不能抛出比父类方法更多的异常
    D只能覆盖父类的方法,(同类中方法之间是重载关系不是覆盖关系!)
    E父类的静态方法不能被子类覆盖为非静态方法(子类覆盖父类静态方法的作用是:隐藏/屏蔽父类静态方法)
    F父类的非静态方法不能被子类覆盖为静态方法
    G父类的私有方法不能被子类覆盖
    H父亲的抽象方法被子类覆盖有两种方式:1:子类实现父类的方法体。2:子类覆盖父类抽象方法(继续抽象)

-----------------------------------------------

  • java语言中4种访问控制权限
    public 同类,同包,子类,不同包
    protected 同类,同包,子类
    无修饰符(默认) 同类,同包
    private         同类

  • abstract 抽象类与抽象方法
    抽象类是在class前用abstract修饰的类。它有较高的抽象层次
    A:抽象类不能被实例化。
    B:抽象类允许有非抽象构造方法,这个构造方法在抽象类的子类被实例化的时候执行
    C:抽象类中的所有的抽象方法必须在在子类中进行实现
    D:抽象类中可以没有抽象方法。就算没有抽象方法,抽象类也不能被实例化。
    E:抽象类和抽象方法不允许被final/static修饰

final和方法


  • final 类不能被继承,final方法不能被子类覆盖override
    用final 修饰的变量表示常量(不允许再被赋值)
  • static 修饰变量(静态变量),修饰方法(静态方法),修饰代码块(静态代码块)
    A:关于静态变量:用static 修饰的变量为静态变量,反之为实例变量
  • 静态变量与实例变量的区别:1:静态变量在内在只分配一次内存,实例变量每实例化一次就分配一次内存。2:静态变量可以用类名直接访问,也可以把类实例化之后访问。3:静态变量被类的所有实例共享。
    作用1:如果对象有相同属性值,在把对象抽象成类时,在类中定义一个静态常量,表示所有对象共享的值(不可修改)
    作用2:如果对象需要共享一个值,每个对象都可以改动这个值,就在类中定义为静态变量,每个对象对它的改动,其他对象都是可见的。
  • 关于静态方法 用static 修饰的方法为静态方法,反之为实例方法
    静态方法必须有方法体(必须被实现)
    静态方法可以用类名调用,也可以用类的实例来调用
    静态方法中不能使用this/super关键字,也不能直接访问所属类的实例变量和实例方法,只能访问静态变量和静态方法。
    static 和 abstract关键字永远不能放在一起使用
  • 关于静态代码块
    static代码块用来初始化类本身,而类的构造方法是用来初始类的实例,当一个类被实例化时,static代码块先执行,类的构造方法后执行。
原创粉丝点击