- ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ------
1. 第十天回顾
封装继承多态:已经完成了
多态:使用方法和定义 父类或者接口 = new子类();方法都是子类重写
编译的时候,知道父类!运行时期,只有非静态方法运行子类!
多态中的转型,向上,向下
向上就是子类提升为父类,JVM自动的,只能使用子类父类共有成员,不能使用子类特有。
向下,需要使用子类特有功能的时候, instancof 判断,防止类型转换异常的方法。
类型的强制转换和基本数据类型完全一样 short s = (short)(1+s); Catc = (Cat)a;
抽象类,怎么定义abstract 方法体,子类抽象类,重写抽象方法,建立子类对象
abstract final private static
2. 第十一天学习内容。 接口interface 如何定义接口,定义规定,如何使用接口。接口自身的特点,接口的多继承,接口和抽象类的区别。内部类,定义格式,如何调用内部类成员,匿名内部类(安卓吗),包package
3. 接口概述
当一个抽象类中,如果所有方法都是抽象方法,看成是一个特殊的抽象类。换了一个新的名词,命名这个类,接口。
接口看成是一个特殊的抽象类,定义接口,使用的就不是class关键字,定义接口的关键字interface 接口名(类名)
接口中的内容,固定格式:
定义成员变量固定写法: public static final 数据类型 变量名 = 值;
定义成员方法固定格式:public abstract 返回值类型方法名();
接口中的修饰符,不写,不表示没有,哪一个不写,编译的时候,自动帮你写
修饰符,可以选择性书写。但是为了程序规范性,都要写.
接口中的权限,固定就是public不能变
4. 接口的使用方式
因此使用接口,换了一个更贴切的名字,不是继承,叫做实现
定义类,实现接口 (定义类,继承抽象类)
实现的关键字implements class XX implements 接口
这个类,称作是接口的实现类(可以叫他子类)
实现类,实现接口,重写全部抽象方法,建立实现类的对象
如果实现类,只重写了部分抽象方法,这个类还是一个抽象类
5. 接口的多实现
实现单继承,很大局限性,Java在接口中,对单继承进行了改良,接口的多实现。
一个类,可以同时实现多个接口 implements 多个接口,逗号分开.
一个类继承一个类,实现多个接口。子类的事情做的太多了,以后关注就是父类或直接接口中的方法声明,运行的是子类的重写
6. 接口和接口之间的关系
类和类之间是继承关系,单继承
类和接口之间是实现关系,多实现
接口和接口之间是什么关系,继承关系,接口支持多继承
面试题:问Java中支持多继承吗,类单继承,接口之间多继承
7. 接口的自身特性
接口是一个对外暴露的规则
接口是对一个程序的扩展性
接口降低了耦合性--紧密连接性
以后写程序,必须考虑扩展性,程序尽量不要写死,紧密性太高,不适合扩展
Cat c = newCat(); c.eat(); Animal a = new Cat(); a.eat();
8. 接口和抽象类的区别
定义上
抽象类,可以有抽象,可以非抽象
接口,全部抽象
使用上
抽象类,单继承,子类继承重写抽象方法
接口,多实现,实现类重写抽想法
继承体系上
抽象类,继承体系最共性内容,是 is a关系
接口,是继承体系的扩展内容,是 like a关系
9. 案例,实现接口的扩展性
传智播客的学生 Java学科
基础0开,就业JavaEE,冲刺 SSH
共性内容,学习
抽烟问题
10. 内部类
将一个类,定义在另一个类的里面。
内部类,可以直接使用外部类的成员,包括私有的
外部类,需要使用内部类的成员,必须建立内部类的对象
class A{
class B{}
}
11. 调用内部类方法
记住三种格式,在Java语言中,凡是内部类,都是通用,静态和非静态的调用方式上的不同。
12. 局部内部类
将,类写在外部类的方法中
成员修饰符,不能在使用了
调用局部内部类方法,只能通过外部类的方法实现
13. 成员内部类,局部内部类的接口实现
成员内部类的接口实现
局部内部类实现接口
接口和多态的结合
14. 匿名内部类
没有名字的
但是匿名内部类,前提,就是需要有继承或者实现
其实是一种简化形式,简化了,实现类的操作
格式:
new 接口或者父类(){
重写抽象方法
}.方法();
15. 包 package
l 对类文件进行分类管理
Java中已经将自己的类,进行了分类管理
java.lang核心包,java.util工具包,java.io输出输入流,java.awt图形界面,java.net网络程序的,java.lang.reflect反射包
l 对类提供了多层命名空间,类的名字, 全类名 包名.类名
l 包对应于操作系统,就是一个文件夹
l 定义包,必须是程序的第一行
定义包,使用关键字package 包名(全小写)
带包编译,编译后,包自动生成
javac -d . XXX.java
编译文件,生成的class文件,存储到c盘 myclass文件夹
环境变量classpath指引JVM 到哪一个目录下找可以运行的class文件
临时配置 set classpath=目录
查看配置后的结果 set classpath
删除临时配置 set classpath=
16. 包与包之间。类的访问
一个包 a 另一个包b
A B
写全类名,权限
17. 包与包之间。类的继承,第四种权限受保护
程序中,不同包直接的类是允许继承的,只要权限足够大
一个包b 一个包c b包中的类,继承c包中的一个类
Java中的四个权限
public protected default private
同一类 ok ok ok ok
同一包 ok ok ok
外包子类 ok ok
不同包 ok
18. 导入包
import 关键字,导入包,实际导入的是包中的类
import 包名.类名; 写在定义包的后面,定义类的前面
使用import 关键字简化书写