韩顺平知识点总结

访问修饰符

在这里插入图片描述

继承的内存分布

在这里插入图片描述

this和super的区别

在这里插入图片描述

重载(overload)与重写(override)区别

在这里插入图片描述

面向对象—多态


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

代码块

在这里插入图片描述

创建一个对象时,类 的调用顺序

在这里插入图片描述

继承关系创建对象,类的调用过程

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

单例模式

两种模式:饿汉式,懒汉式

在这里插入图片描述

饿汉式代码实现

在这里插入图片描述

懒汉式代码实现

在这里插入图片描述

final关键字

调用静态属性i时,静态代码块不会被调用
在这里插入图片描述

接口

在这里插入图片描述

接口Vs继承

1.实现接口是对Java单继承的一种补充,
2.当子类继承了父类,就自动的拥有了父类的功能
3.如果子类需要扩展功能,可以通过实现接口的方式扩展
4.继承的价值:解决代码的复用性和可维护性
5.接口的价值:设计,设计好各种规范(方法),让其他类去实现这些方法
6.接口比继承更加灵活
继承是is a的关系,而接口只需要满足like a的关系
7.接口在一定程度上实现代码的解耦
比喻:猴子继承爬树,可以实现鱼一样的游泳,可以实现小鸟一样飞翔

内部类

类的五大成员:属性,方法,构造器,代码块,内部类
内部类的分类:
定义在外部类局部位置上(比如方法内)
1)局部内部类(有类名)
2)匿名内部类(没有类名,重点!!!)
定义在外部类的成员位置上
1)成员内部类(没有static修饰)
2)静态内部类(有static修饰)
1.局部内部类

  • 局部内部类是定义在外部类的局部位置,通常在方法,还可以在代码块中
  • 可以直接访问外部类的所有成员,包含私有的
  • 不能添加访问修饰符,但是可以添加final修饰
  • 作用域:仅仅在定义它的方法或者代码块中
  • 局部内部类可以直接访问外部类的成员
  • 外部类在方法中,可以创建对象,调用内部类的方法即可
  • 如果外部类和局部内部类的成员重名时,默认遵守就近原则,如果想访问外部类的成员,使用外部类名.this.成员去访问
  • 外部类名.this.成员解读:哪个对象调用了这个方法,外部类名.this就是哪个对象
    2.匿名内部类
    遵守局部内部类的规则
    特点:本质是类,是内部类,是没有名字的类,同时还是一个对象
    基本语法
    new 类或者接口(参数列表){
    类体
    }
    new 接口代码实现
public  class A {
    public static void main(String[] args) {
        IB ib = new IB();
        ib.eat();
    }
}
class IB {
    /**
     * 1.需求:使用IA接口,并创建对象
     * 2.传统方法是写一个类,实现接口,创建对象
     * 3.类只使用一次,后面不在使用,创建类太浪费
     * 4.可以使用匿名内部类来简化开发
     * 5.ia的编译类型?   IA
     * 6.ia的运行类型?   就是匿名内部类 XXXX =>IB$1 就是外部类@1
     * 底层原理:创建一个类 会分配类名 IB$1
     * class XXXX implements IA{
     *      @Override
     *      public void cry() {
     *          System.out.println("老虎叫唤");
     *      }
     * }
     * 7.jdk底层在创建匿名内部类IB$1,立即马上创建IB$1实例对象,并把地址值返回给变量ia
     * 8.匿名内部类使用一次就不能使用了
     */
    /**
     * 底层 会创建一个类
     *
     */
    public void eat(){
        IA ia = new IA() {
            @Override
            public void cry() {
                System.out.println("老虎叫唤");
            }
        };
        System.out.println(ia.getClass());
        ia.cry();
    }
}
interface IA{
    void cry();
}

3.成员内部类

  • 成员内部类,是定义在内部类的成员位置,不使用static修饰
  • 可以直接访问外部类的所有成员,包含私有的
  • 作用域:同其他成员,为整个类体
  • 可以添加修饰符(public,protected,默认,private),因为它本身就是一个成员
  • 外部类访问内部类:创建方法,new对象访问
  • 外部其他类访问内部类的2种方式:
  • 1)外部类的对象.内部类的对象
  • 2)在外部类中编写一个方法,返回一个内部类的对象
    4.静态内部类
  • 静态内部类,是定义在外部类的成员位置,使用static修饰
  • 可以直接访问外部类的static成员
  • 可以添加修饰符(public,protected,默认,private),因为它本身就是一个成员
  • 作用域:同其他成员,为整个类体
  • 外部类访问内部类:创建方法,new对象访问
  • 外部其他类访问内部类的2种方式:
  • 1)因为静态内部类是可以直接通过类名直接访问(前提是满足修饰符权限)
  • 2)在外部类中编写一个方法,返回一个内部类的对象
  • 当静态内部类与外部类成员重名时,使用外部类.成员访问

枚举

默认继承Enum类,不允许在继承其他类,可是实现接口
在这里插入图片描述

注解

元注解:修饰注解的注解,成为元注解

  • Retention 指定注解的作用范围,三种source,class,runtime保存范围源码,class,运行
    在这里插入图片描述
  • Target 指定注解可以在哪些地方使用
  • Documented 指定注解是否会在javadoc体现
  • Inherited 子类会继承父类注解

异常(ctrl+alt+t)

java语言中,将程序执行中发生的不正常情况成为***异常***
异常体系图:
在这里插入图片描述
Error(错误)

  • StackOverflowError栈溢出
  • OutOfMemoryError内存不足
    Exception(异常)
  • 运行时异常(RuntimeException)
    • NullPointerException 空指针异常
    • ArithmeticException 算数异常
    • ArrayIndexOutOfBoundsException 数组下标越界异常
    • ClassCastException 类型转换异常
    • NumFormatException 数字格式不正确异常
  • 编译异常
    • SQLException 操作数据库时可能发生的异常
    • IOException 操作文件,反生的异常
    • FileNotFoundException 一个不存在的文件,反生的异常
    • ClassNotFoundException 类不存在异常
      异常处理机制:
  • try-catch-finally在这里插入图片描述 - throws
    在这里插入图片描述
    自定义异常
    一般我们自定义异常都是继承RuntimeException,
    即把自定义异常指定为运行时异常
    好处:我们可以使用默认处理机制
    Throw和Throws区别
    在这里插入图片描述

包装类

Integer
只要有基本类型,判断的都是值
在这里插入图片描述
包装类与String相互转换
在这里插入图片描述
在这里插入图片描述

String

在这里插入图片描述

String,StringBuffer,StringBuilder

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值