Java学习第十一天

接口:不实现具体功能,只提供一些规范、约束
作用:
1、提供规范、约束
2、对继承进行了扩展(一个类可以实现多个接口)
在java中接口的关键字是interface
【重要】
1、接口里的方法只能是公共的抽象方法(abstract可以省略)
2、接口里的成员变量只能是公共的(public)静态(static)/ 常量(final)

接口和接口之间是继承关系,一个子接口可以继承多个父接口,多个父接口间无先后顺序
类和接口之间是实现关系,一个类在继承父类的同时可以实现多个接口
注意:要先继承父类,再实现接口
      类实现接口后,就必须实现接口里的所有方法(接口的父接口方法也要实现),除非是抽象类

java中继承的特点:
基类单继承,接口多实现
接口设计时的原则:接口分离原则
把相关功能(方法)放在一个接口中,不要所有方法放在一个接口里

开闭原则:对修改关闭,对扩展开放

设计程序时,在顶层的结构中,通常都是接口或抽象类,用来约束子类的行为
作用:
1、约束、规范子类
2、对程序扩展
3、LSP,用接口做类型,new子类对象

问题:在设计程序时,如何选择使用抽象类还是接口?
分析:
1、继承关系属于is-a的关系
2、实现关系属于has-a的关系
回答:符合is-a关系的设计为类,符合has-a关系的设计为接口
      单继承设计成类,多继承的设计成接口

总结:接口的特点:
1、接口里的方法都是公共的抽象方法
2、接口里的变量都是公共的常量
3、接口可以继承多个父接口
4、类可以实现多个接口

final在面向对象中的使用
可以修饰变量、方法、类
1、final修饰变量,叫做常量,赋值后再程序运行过程中不能改变值的量
   常量在声明的同时就要赋值,常量的命名时通常都是大写
   常量的使用场合:
       为了使信息统一,使用常量来存放统一的
2、final修饰方法:叫做最终方法,不能被子类重写
   使用场合:不允许子类覆盖掉父类中的方法,保留父类里的方法时
3、final修饰类:叫做最终类,不允许被继承
   使用场合:类里的内容固定,不允许通过继承来扩展

在java程序中内存共分为三个区域:
1、static 静态区域 
   静态内存里的数据可以直接使用
   在java中通过static修饰的成员,在程序运行时直接存放在内存的静态区域中
   
   静态变量/常量  静态方法
   静态成员的访问是通过类名来访问的

2、栈
内存里较小的空间,读取速度快
main方法里的数据存放在栈空间里

数据结构有两种读取结构:
队列结构:先来先处理
堆栈结构:先来后处理

3、堆
内存空间较大,存放new出来的数据,堆空间的内容由自动垃圾回收机制来清理


栈里的局部变量,在方法的或语句块执行结束后就消失
堆里的内容由java的自动垃圾回收机制来回收处理
自动垃圾回收机制(GC)的工作原理:
a、检测程序中没有引用的地址,添加到计划列表中(队列)
b、按照先后顺序进行清理
c、在清理过程中如果发现有地址被引用了,则从计划列表中删除

猜你喜欢

转载自blog.csdn.net/bii_yu/article/details/78186764