JavaSE-面对对象疑难点

1.堆和栈

JAVA中的栈和堆
Java方法区、堆、栈、本地方法区及新生代、老年代、元空间整合
JAVA在程序运行时,在内存中划分5片空间进行数据的存储。分别是:1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。
:基本数据类型、局部变量都是存放在栈内存中的,用完就消失。存取速度仅次于寄存器。
:new创建的实例化对象及数组,是存放在堆内存中的,用完之后靠垃圾回收机制不定期自动消除。存取速度较慢。

2.static

特点

  • static修饰的成员被所有对象共享
  • static优于对象存现,因为static的成员随着类的加载已经存在了

使用

  • 静态变量:用于所有对象都只能读的不变量
  • 静态方法:不需要访问非静态的成员变量的方法

3. 单例设计模式

定义:一个类在内存中的对象唯一性
实现

  • 私有化构造函数
  • 使用new在本类中创建一个本类的对象
  • 定义一个返回该类对象的公有方法。

4. 抽象类和接口

抽象类和接口有什么区别
在这里插入图片描述
在这里插入图片描述
相同点:都是不断向上抽取而来的
不同点:

  • 抽象类需要被继承,只能是单继承
    接口需要实现,可以是多实现
  • 抽象类中可以定义抽象方法和非抽象方法
    接口中只能定义抽象方法,必须由子类实现
  • 抽象类的继承,是is a 关系,实际是定义了该体系的基本共性内容
    接口的实现是like a关系,实际是定义了体系额外的功能

5.final

  • final是一个修饰符,可以修饰类、方法、变量
  • final修饰的不可以被继承
  • final修饰的方法不可以被覆盖
  • final修饰的变量是一个常量,只能赋值一次(全部字母大写,多个单词“_”连接)

6. 多态

定义:一个对象对应着不同的类型。比如猫既有猫的形态,又具有动物的形态。
体现:父类或者接口的引用指向其子类的对象。

Animal c_animal = new Cat();  //向上转型,将子类的特性隐藏,无法使用子类特有方法
Cat c_cat = Cat(c_animal);   //向下转型,使用子类的特有方法
// 注意:自始至终都是子类对象在做着类型变化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值