JAVA总复习-----1

1.类和对象

类的作用是定义对象,类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体,一个对象又称为类的一个实例

  • 面向对象的三大特征:封装 继承 多态
  • 面向对象的四大特征:抽象 封装 继承 多态

1.1 封装

封装:把对象的属性和服务结合成一个独立系统单位,并尽可能隐蔽对象的内部细节(java封装信息有四种访问权限:public>protected>包访问权限>private

1.2继承

继承:特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。

1.3多态

定义:指类中具有相似功能的不同服务使用同一个名称来实现的现象。

1.3.1实现原理

1.静态绑定:重载–>条件
相同作用域,方法名相同,参数列表不同
2.动态绑定:重写–>条件(父子类,子类重写父类方法 )
方法名相同,参数列表相同,修饰符
子类权限 >= 父类权限
在这里插入图片描述

在这里插入图片描述

1.3.2实现条件

-1.继承/实现关系
-2.方法重写
-3.向上造型,重写方法的调用
基类引用:引用 派生类对象
基接口引用:引用 实现该接口的类和对象

1.2JVM

JVM内存划分:

在这里插入图片描述

1.2.1类加载过程

类加载期间给new的对象载堆中开辟空间
条件:

  • new
  • main函数
  • 类名.静态成员
  • 反射:People.class \ Class.forName(“People”)

阶段:

  • 装载(加载) 产物:生成当前类的Class对象->保存当前类类信息 class对象 方法区入口
  • 链接
  • 初始化

2.重写和重载的区别

1、重写实现的是运行时的多态,而重载实现的是编译时的多态。
2、重写的方法参数列表必须相同;而重载的方法参数列表必须不同。
3、重写的方法的返回值类型只能是父类类型或者父类类型的子类,而重载的方法对返回值类型没有要求。

3.Final

变量:final int INITSIZE = 10 常量
方法 :final void fun(){ } 不允许重写
类:final class String{ } 不能被继承

4.Static

4.1变量

静态变量和实例变量区别:

  1. 存储位置:静态->方法区、实例变量->堆
  2. 静态->类有关,一个类只有一份静态变量、实例->对象有关,几个对象几份实例变量

4.2方法

静态方法和实例方法区别:

  1. 调用方式不同:静态->类名.静态方法、实例->对象.实例方法
  2. 重写:静态方法不能被重写,private方法不被重写

4.3类 - >内部类

静态内部类和实例内部类的区别(是否包含外部类对象的this)
在内部类中看是否需要访问外部类:需要->实例、不需要->静态
在这里插入图片描述
在这里插入图片描述

5.单例模式

构造函数私有,公有函数返回实例对象
条件:private构造函数,公有静态函数,返回实例对象

5.1懒汉单例(用时创建对象)

优点:尽最大可能节省内存空间
缺点:在多线程编程中,使用懒汉式可能造成类的对象在内存中不唯一,虽然用过修改代码可以改正这些问题,但是降低了效率,线程不安全
在这里插入图片描述

5.2饿汉单例(类加载时创建对象)

线程安全,安全是由类加载机制保证
在这里插入图片描述

5.3静态内部类实现单例模式

线程安全,不存在线程同步问题,且单例对象在程序第一次getInstance()时主动加载SingleletonHolder和静态成员INSTANCE.
在这里插入图片描述

5.4 静态块实现单例模式

线程安全,类主动加载时才初始化实例,实现了懒加载策略

今天也要好好学习呀~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹿可可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值