多态
子类对象可以存到父类的变量中
前提条件
子父类关系
方法重写
父类引用指向子类对象
好处
提高代码的复用性和扩展性
缺点
不能使用子类对象的特有方法
多态成员访问的特点
编译看左边,运行看左边
成员变量
静态方法
编译看左边, 运行看右边 ,只要子类中重写了,一定执行子类的方法
非静态成员方法 (全遮挡)
多态转型
向上转型 (子类转父类)
线下转型 (父类转子类,有危险), 转之前,要使用 instanceof关键字判断一下
final
最终的, 无法被改变 , 只能赋值一次
修饰的特性
修饰类, 类不能被继承
修饰方法, 方法不能被重写
修饰变量, 变量只能赋值一次
修饰成员变量时
在初始化完毕之前必须要赋值
静态是类初始化完毕前
非静态是对象初始化完毕前
抽象类
abstract关键字
制定规则
一个类中如果有抽象方法,这个类也必须是抽象类
抽象类中可以没有抽象方法
抽象不能实例化(创建对象) , 不安全, 抽象方法用不了
抽象类的子类可以是抽象类, 不用重写抽象方法
抽象类的子类可以是非抽象类, 必须重写抽象方法
java传递值得方式
基本数据类型传递的是值, 引用数据类型传递的是址, String稍微特殊
接口
interface implements
接口中全部都是抽象方法
接口中的成员变量
都是公开的, 静态的, 最终的 public static final
作用
指定规则
思考的过程
代码的框架
我们在思考过程中, 用来记录业务逻辑.
类和接口之间的关系
类和类: 继承 单继承, 多层继承
类和接口: 实现, 可以多实现
接口和接口: 继承, 可以多继承
模板模型
实现类和接口中的内容保持一致
好处: 提高了代码的扩展性
成员内部类
当类中的成员过多时, 使用成员内部类再次分组
成员内部类一般来说时为外部类服务的
特性
内部类可以直接调用外部类的成员
外部类需要先创建对象才能调用内部类的成员
内外部类都可以调用对方的私有化成员
创建内部类对象前必须先创建外部类对象
静态内部类
基本用法和成员内部类相似
就是给内部类加上static关键字, 唯一的作用是可以让用户跳过外部类直接访问到内部类
内部类是静态的,绝不能认为内部类中的成员也是静态的,这些成员还是原先的调用方式
如果内部类中有静态成员,那么这个内部类也必须是静态的
局部内部类
当一个类只能在当前方法中被用到时,我们没有必要将他写道外部去, 可能会干扰其他类的使用
局部内部类中如果使用局部变量, 那么,这个变量要变成常量
匿名内部类
创建某个类或接口的子类对象, 类只被使用异常
new 父类 () { } ;
异常
异常在Java中普遍存在, 并且有存在的意义
可能发生异常的地方 ?
运行时
代码警告
语法错误(自己改)
解决异常的办法
抛出
try...catch处理
代码可以继续运行 ,手动书写处理过程
自定义异常
异常最终要的是类名
继承Exception就是编译时异常
继承RuntimException就是运行时异常
二维数组
数组中存放的还是数组
权限修饰符
public protected 默认 private
java中的包
jvm识别类,要知道全名(包名+类名)
编译器有自动补全功能, 从类本上开始找 -- > import -- > package
Object
toString
hashCode
equals
getClass
== 和 equals的区别
equals相等的
两个对象 hashCode一定相等, equals不等的两个对象, hashCode也有可能相等 (两个方法同步重写)
String
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。我们可以将字符串看作是String, 但是严格严格意义上来说, String还是一个类,只是比较特殊罢了
常用的构造方法
public String():空构造
public String(byte[] bytes):把字节数组转成字符串
public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
public String(char[] value):把字符数组转成字符串
public String(char[] value,int index,int count):把字符数组的一部分转成字符串
public String(String original):把字符串常量值转成字符串
常用的获取方法
int length(): 获取字符串的长度
char charAt(int index): 获取指定索引位置的字符
int indexOf(int ch): 返回指定字符在此字符串中第一次出现处的索引, ch是字符的码表值
int indexOf(String str): 返回指定字符串在此字符串中第一次出现处的索引
int indexOf(int ch,int fromIndex): 返回指定字符在此字符串中从指定位置后第一次出现处的索引
int indexOf(String str,int fromIndex): 返回指定字符串在此字符串中从指定位置后第一次出现处的索引
int lastIndexOf 同上
String substring(int start):从指定位置开始复制字符串,默认到末尾
String substring(int start,int end):从指定位置开始到指定位置结束复制字符串