面向对象特性

对于面向过程的思想,强调的是动作(过程)
对于面向对象的思想,强调的是对象(实体

类是一种事物的抽象,对象是类的实例化。包括两方面内容:其一为属性(变量?),其二为行为(方法)。

成员变量和局部变量的区别
1) 成员变量定义在类中,在整个类中都能被访问
局部变量定义在函数,语句,局部代码块中,只在所属域中有效
2) 成员变量存在在堆内存中
局部变量存在在栈内存中
3) 成员变量是跟随对象存在和消失
局部变量是随所属域存在和消失
4) 成员变量有默认初始值
局部变量没有默认初始值

构造器和垃圾收集器 所有对象都在heap创建
初始化和清理Java采用构造器以及垃圾回收器
有了构造器形式参数,就可以在初始化对象中提供实际参数
一旦你定义了构造器,编译器是不会默认生成无参的构造器的
Java从堆中分配对象的速度,可以和其他语言从栈中分配对象相媲美
垃圾回收器一面回收空间,一面使得堆中的对象紧凑排列
Java虚拟机并没有引入引用计数的概念来用于处理垃圾的回收

垃圾回收器的工作机制:垃圾回收期执行是在启动垃圾回收期后的某一个时刻才能执行
1) 停止—复制 先暂停程序的运行,通过两个不同堆空间的复制,没有被复制的就是垃圾,新堆复制对象是一个挨着一个,紧凑排列。
效率较低:1)两个堆空间 2)无论是否有垃圾需要回收,复制回收器都有可能会运行
2} 标记-清扫 通过引用找到存活的对象,给对象做标记。等待标记全部完成后,才会进行清理工作,这种机制获得的堆空间不是连续的,需要重新进行整理
3)标记-整理 1+2

Java访问修饰词
public:public后的成员说明是公共的
protected:同包和子类
包访问权限:默认访问权限,同包内
private:private的成员,除了自己之外,其他的类是无法访问到

面向对象的特征
1) 封装
隐藏对象的属性和实现细节
封装原则:将不需要对外提高的内容隐藏起来
属性隐藏,提供公共方法进行引用
好处:
1) 将变化隔离
2) 便于使用
3) 提高重用性
4) 安全性

2) 继承
继承:使用某个现有类,并开发一个特殊版本——is a
继承一般是复用的接口(从属关系),抽取共性内容,提高代码复用性
java中类支持单继承,多层继承,不支持直接多重继承(通过接口进行改良)
接口的适配:被适配的类可以通过继承和实现接口来创建。通过使用接口关键字interface实现伪多重继承机制

@override 覆写某种方法 选择添加该注解 如是重载,编译器会报错
1) 子类重写方法,子类的权限修饰符必须大于等于父类的权限修饰符
2) 子类重写方法,返回值类型必须小于等于父类方法 针对于返回的类类型
3) 子类重写方法,存在异常 异常类型必须小于等于分类出现的异常
4) 私有方法,子类不能重写

 简单认识abstract和implements
 abstract可以用来修饰抽象类和抽象方法,在抽象类里面不一定存在抽象方法,有抽象方法的类一定是抽象类
 接口可以嵌套,Interface是产生完全抽象的类,接口内的成员默认是public的。实现该接口,接口方法需要说明为public,
 否则是包访问权限。在接口的域,隐式是static和final的,所以接口成为一种便捷的用来创建常量组的工具
 
 abstract修饰的类,一定只能被继承,里面的抽象方法需要子类来实现,implements里面的方法一定是抽象的,
 里面的成员变量一定是static,final类型的,一个类可以有多个实现,这可能是为了打破java里面的单继承。
  1. 多态 (需要注意到使用多态的情况下,成员变量和成员方法相关的引用)
    多态的作用是消除类型之间的耦合关系
    多态意味着“不同的形式”,我们持有从基类继承而来的相同接口,以及使用该接口的不同形式:不同版本的动态绑定方法

多态的好处和弊端:
好处:提高了代码的扩展性
弊端:不能访问子类特有的功能

动态绑定:忘记对象类型 向上转型
用继承表达行为间的差异,并用字段表达状态上的变化
静态绑定:程序运行之前,方法调用就与调用方法的对象主体绑定在一起
类的强转是为了使用子类中特有的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值