多态、内部类和异常、二维数组String类

多态

子类对象可以存到父类的变量中

前提条件

子父类关系

方法重写

父类引用指向子类对象

好处

提高代码的复用性和扩展性

缺点

不能使用子类对象的特有方法

多态成员访问的特点

编译看左边,运行看左边

成员变量

静态方法

编译看左边, 运行看右边  ,只要子类中重写了,一定执行子类的方法

非静态成员方法 (全遮挡)

多态转型

向上转型 (子类转父类)

线下转型 (父类转子类,有危险), 转之前,要使用 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):从指定位置开始到指定位置结束复制字符串

你可能感兴趣的:(多态、内部类和异常、二维数组String类)