知识点整理
Java面向对象编程的特点:继承性,多态性,封装性。
1、内部类
a) 匿名内部类:匿名子类类名的实现机制
b) 成员内部类:是和函数或者成员属性平级的内部类
成员内部类注意点:
1)访问权限:可以用四种访问权限修饰
2)成员内部类可以是静态的
3)接口是特殊的抽象类
注意:外部类只能用public和default修饰
c) 函数内部类
函数内部类不允许被任何访问权限修饰
1、定义基本数据类型:如果是整数,则默认是int,如果是小数默认是double
2、流的分类:
a) 字节流:字节输入流、字节输出流 InputStream\OutputStream
b) 字符流:字符出入流、字符输出流 Reader\Writer
c) 直接能使用的基类:FileInutStream\FileOutputStream FileReader\FileWriter
d) 字节包装流:DataInputStream\DataOutputStream
ObjectInputStream\ObjectOutputStream
BufferedInputStream\BufferedOutputStream
e) 字符包装流:BufferedReader\BufferedWriter
f) 如何把字节流转化为字符流:InputStreamReader\OutputStreamWriter
4、继承extends和implements使用场景
A类是普通类 B类是抽象类 C类是接口
i. extends:A extends B A extends A B extends A B extends B C extends C
ii. Implements: A implements C B implements C
抽象类与接口的异同:
相同点:
1、都不能被直接实例化,都可以通过继承实现其抽象方法。
2、都是面向抽象编程的技术基础,实现了诸多的设计模式。
不同点:
1、接口支持多继承;抽象类不能实现多继承。
2、接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。
3、接口是一组行为规范;抽象类是一个不完全的类,着重组的概念。
4、接口可以用 于支持回调;抽象类不能实现回调,因为继承不支持
5、接口只包含方法、属性,索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的放法。
6、接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。
Java启动一个线程是用run()还是start(),有啥区别?
启动一个线程是start()方法;线程启动后start()方法会去调用run()内容。
区别:start()是创建并启动一个线程,而run()是运行线程里的代码。
静态变量和实例变量的区别:
在语法定义上的区别:静态变量前要加static关键字,而实例变量前不加;
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
属性的访问修饰符public,private,protected以及不写时的区别
|
作用域 |
当前访问 |
同包 |
子类 |
其他 |
|
public |
T |
T |
T |
T |
|
protected |
T |
T |
T |
F |
|
default |
T |
T |
F |
F |
|
private |
T |
F |
F |
F |