1.
没有static关键字,非静态方法,有就是静态方法
类方法即静态方法,对象方法即非静态方法
构造方法
- 创建对象,会调用构造方法,构造方法会初始化类中所有成员变量,即使你什么都不写
- 类中如果没有声明构造方法时会默认生成无参构造方法
- 构造方法无返回类型;无返回类型(构造方法)和无返回值类型(void)需区分清楚
就近原则
- 如果传入方法的参数和类里面的参数相同,则java采用就近原则,离得近的为实际调用的变量,所以有必要用this指定,如上图所示。
java中基本数据类型和默认类型的默认值
- 默认布尔类型为false,引用对象为null,其他数据类型赋值为0,(char为数值0)。
四种权限修饰符级别
- private 本类下可以调用
- default 同一个包下可以调用
- protect 子类可以调用
- public 公共的
断言
Java -ea 开启断言
- 断言:调试使用,布尔类型。 断言出错即报错,运行时异常的子类
不需要捕获的异常:运行时异常
运行时异常:(空指针,构造异常,数组下标越界,)所有的运行时异常可以通过严谨的编程控制
JAVA的统一做法:Java所有属性都为private,并为其加上get和set方法
Alt+insert 创建get和set方法
引用数据类型的类型转换:
自动:子类对象转为父类对象
强制:父类对象转为子类对性(可能构造异常)
例
类型检查关键字
- 左侧是引用变量,右侧是一个类
重载在一个类里的不同方法
重写在两个类中,是继承关系
(
方法名一定相同;
参数列表必须相同;
返回值类型:为父类返回值类型或其子类型;
子类的方法访问权限不能小于父类;
子类抛出的异常一定是父类抛出异常范围内的异常
)
JAVA四种引用:强,软(内存不足时会被回收),弱,虚;(后两个一旦被垃圾回收机制发现立刻回收)
Final修饰类, 不能被继承,修饰变量属性为常量,只能赋值一次
Finalize()方法:当类被回收时触发,类似于C++的析构函数
System.gc(); 唤醒垃圾回收机制,只能唤醒,无法确定是否被回收
抽象方法一定是在抽象类中,一定没有方法体
抽象方法是为了被重写
如果继承有抽象方法的抽象类时,一定要重写抽象方法
抽象类不能被实例化
接口
- 接口内没有属性,只有常量,以static final修饰的常量
- 接口不可以被实例化
- 方法:接口中的方法默认具有public abstract两个关键字修饰,1.8之后可以有方法体,要加上default关键字
- JAVA1.8之后,可以有静态方法
- 如果多继承重名的方法,则必须重写此方法
使用static+final修饰符修饰常量,存入常量池
JAVA可以实现多个接口但只能单继承
JAVA中没有类似C++的方法指针,所以依靠接口来实现一些方法
接口的实现方式有多种
- 匿名内部类
- Lambda只能实现只有一个方法的接口,()中为参数。
- 方法里面有一个参数,则可以去掉(),可以用于实现安卓的监听器
- 接口的另一种实现方式:代理接口 Proxy