Java基础点:面向对象下

  1. Static关键字使用
    a) 可以修饰属性、方法、代码块、内部类
    b) 修饰属性:静态变量(类变量)class variable, 相对的是非静态变量(实例变量)instance variable
    i. 实例变量:每个对象都独立拥有一套类中的非静态变量
    ii. 静态变量:多个对象共享一个静态变量
    iii. 静态变量随着类的加载而加载,直接通过“Class.ClassVariable”调用
    iv. 加载早于对象创建,而且只加载一次
    v. 存在于方法区的静态域(Static field)中
    vi. 例子:System.out Math.PI
    c) 修饰方法:
    i. 随着类的加载而加载,可以直接调用
    ii. 静态方法只能调用静态的方法和属性(生命周期判断),非静态方法都能调用静态和非静态。
    d) Static引出的设计模式
    i. 单例模式Singleton

  2. 对某个类只存在一个对象实例

  3. 三要素
    a) 构造器的访问权限设为private
    b) 调用该类的某个静态方法
    c) 类对象的变量也是静态的

  4. 两种实现
    a) 饿汉式:创建当前类的对象
    b) 懒汉式:先声明但不创建当前类的对象

  5. Main()方法的使用说明
    i. 程序的入口
    ii. 也是个静态方法,不能直接调用其他非静态方法,需通过创建对象的方式调用。
    iii. 与控制台交互

  6. 代码块(初始化块)
    a) 用于初始化类,对象
    b) 代码块如果有修饰的话,只能使用static
    c) 分类:
    i. 静态代码块:随着类的加载而实行,只执行一次
    ii. 非静态代码块:随着对象的创建而执行,每创建一次对象执行一次
    d) 作用:
    i. 可以在创建对象时,对对象的属性进行初始化

  7. Final关键字
    a) 可以修饰类、方法、变量
    i. 类:不能被继承
    ii. 方法:不可以再被重写
    iii. 变量:此时的变量变为常量,可以考虑的赋值位置有:显示初始化,代码块和构造器初始化
    iv. 局部变量:方法的形参,或者方法体内的变量
    v. Static final 修饰属性:全局常量

  8. 抽象类—>只能修饰类和方法
    a) 有时候将一个父类设计的非常抽象,保证父类和子类能共享特征,父类不再有具体实例—>抽象类
    b) 用abstract修饰类时,次类不能被实例化,抽象类中一定有构造器
    c) Abstract修饰方法:抽象方法,该方法没有方法体
    d) 包含抽象方法的类 一定是抽象类
    e) 当子类重写了父类的所有方法以后,子类才可以实例化。(包括间接父类)
    f) 不能修饰私有方法,静态方法,final方法(私有方法没法被重写)

  9. 创建抽象类的匿名子类对象
    a) 假设Person是抽象类
    Person p = new Person(){
    @Override
    Public void overwriteAbstractMethod(){}
    }//这个创建了一个匿名子类对象:P,没有特定的子类名字,但是创建了一个对象

  10. 抽象类的应用:设计模式模板方法(TemplateMethod)

  11. 接口(interface)
    a) 一个类可以实现多个接口,解决了单继承的局限性
    b) 接口和类是两个并列的结构
    c) 使用
    i. JDK7:只能定义全局常量和抽象方法

  12. Public static final 和 public abstract
    ii. JDK8:还可以定义静态方法、默认方法

  13. 默认方法default和静态方法static

  14. 实现类可以直接调用默认方法,也可以重写默认方法

  15. 若实现类的父类,和实现的接口有同名同参默认方法,则实现类(子类)使用的是父类中的同名同参数的方法。(类优先)

  16. 在实现类中调用接口的默认方法:
    a) 实现类类名.super.默认方法名()

  17. 默认和静态方法,使得接口越来越像类了,可以直接或间接调用接口中已经定义好的方法,自己的类不需要再进行方法的重写
    d) 接口中不能使用构造器 不能进行实例化
    e) 通过类来实现接口(implements)
    i. 如果实现类,没有覆盖接口的所有抽象方法,则仍然是抽象类
    ii. 若实现所有接口的抽象方法,则实现类可以被实例化

  18. 接口应用
    a) 设计模式:代理模式(Proxy)
    b) 工厂模式:实现了创建者和调用者的分离,即将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。

  19. 内部类inner class
    a) java中,允许一个类的定义在另外一个类的内部,前者成为内部类,后者成为外部类。(没必要在外边定义,只在这个外部类中使用,所以可以用内部类简化)
    b) 成员内部类 vs 局部内部类(相对于局部变量和成员变量理解放的位置)
    i. 局部内部类:方法内,代码块内,构造器内

  20. 用处,例如:要求方法返回一个实现了Comparable接口的类的对象:在方法中使用局部内部类来实现接口,然后方法返回该内部类的实例。

  21. 使用外部属性时,只能读取不能修改,外部属性有隐式的final定义。
    ii. 成员内部类:(静态,非静态)

  22. 可以定义属性,方法构造器等

  23. 可以被final修饰,则不被继承

  24. 可以被abstract修饰

  25. 可以被权限修饰符修饰

  26. 调用外部类的非静态属性方法:外部类类名.this.外部类属性(方法)

  27. 实例化
    a) 静态成员内部类:外部类类名.成员内部类 ins=new 外部类类名.成员内部类();
    b) 非静态成员内部类:先创建外部类实例p —>再Person.Bird bird = p.new bird();

  28. 异常概述
    a) 将程序执行中发生的不正常的情况成为异常(开发过程的语法和逻辑错误不是异常)
    b) Error:JVM 无法解决的严重问题 例如:StackOverflow OOM
    c) Exception:编程错误或外在因素导致,可以用针对性代码处理。 例如:空指针 读取不存在的文件
    d) 分类:
    i. 编译时异常:最理想在编译时捕获错误,受检异常(checked)
    ii. 运行时异常Runtime Exception:非受检异常(unchecked)
    e) 常见异常的举例

  29. NullPointerException空指针异常
    a) 调用null的地址

  30. ArrayIndexOutOfBound
    a) 数组角标越界

  31. ClassCastException类型转换异常
    a) Object obj = new Date();//多态 String str = (String) obj;//父类强转子类

  32. NumberFormatException

  33. InputMismatchException
    a) 输入不匹配

  34. ArithmeticException 算数的异常

  35. 异常处理:try—catch—finally用于处理编译时异常,运行时仍可能报错
    a) “抛”:一旦出现异常,就会在异常代码处生成一个对应异常类的对象,并将对象抛出。抛出后,其后的代码不再执行
    b) 两种常见处理输出方式
    i. e.getMessage();
    ii. e.printStackTrace();
    c) 在try结构中声明的变量,在外部无法再使用
    d) Finally:声明的是一定会被执行的代码。即使catch中又出现异常了,try中有return语句,也会执行
    i. 用法:对于物理连接,例如数据库连接,输入输出流连接 socket连接 这些垃圾回收机制无法处理的,需要手动关闭的,防止出现异常而没有关闭

  36. 将关闭的语句放到finally语句块中。

  37. Throw方式
    a) 将异常抛给方法的使用者,并没有真正的将异常处理掉。

  38. 方法重写与异常有关的规则
    a) 子类重写方法抛出的异常,不大于父类被重写方法抛出的异常类型。

  39. 手动抛出异常对象
    a) Throw new runtimeException(“message”);//创建了一个运行时异常对象
    b) 若抛出编译时异常,则需要try/catch

  40. 用户自定义异常类
    a) 继承extends现有的异常结构:runTimeExeception,Exception
    b) 提供全局常量:serialVersionUID 提供重载的构造器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值