第四篇学习总结

2020-01-22  本文已影响0人  拼搏男孩

第四篇学习总结

一、多态

多态按照我的理解就是一个继承了父类的子类可以看作是它的父类。

1、多态的条件

2、优缺点

3、多态成员访问的特点

3.1 成员变量

编译看左边(父类),运行看左边(父类)(静态绑定),使用的仍然是父类的成员变量,没有多态,这种静态绑定在一般情况下使用极少,成员变量一般都是私有化的。

3.2 成员方法

编译看左边,运行看右边,这是动态绑定。子类中如果堆父类中的方法进行了重写,父类中的方法无论如何都无法被访问,这是动态绑定的结果。

3.3 静态方法

编译看左边,运行看左边。子类其实并不能重写父类的静态方法,所以当然不能访问子类的方法。

4、多态转型

4.1 向上转型

将子类对象看作是父类类型,这种情况下,无法调用子类的特有的功能。

4.2 向下转型

将父类引用指向的子类对象再转回子类类型,这种转换是有风险的,再转换之前一定要使用instanceof关键字判断以下。

二、final关键字

1、final修饰的特点

2、final修饰成员变量的初始化时机

三、抽象类

抽象类的主要作用是为了定义规则,抽象类及其中的抽象方法必须用abstract关键字进行修饰。

1、抽象类的特点

四、Java值传递的三种方式

八种基本数据类型传递的是值,引用数据类型传递的是址,也就说把地址复制一份,String 比较特殊, 它虽然是一个引用变量, 但是它传递的是具体的数值
String 首先是在对内存中创建一个对象,对象里面封装的是常量值, 然后将数值放入到常量池中, 再指向String。

五、接口

接口是更加抽象的“抽象类”,接口中必须都是抽象方法,不能有具体的实现,Java中的接口用interface来标识。

1、接口的特点

2、接口与类之间的关系

根据我的理解,接口其实也是一种类,只不过它是一种比较特殊的类,普通的类只能单继承,但是接口可以多实现。

3、设计模型之模板模型

模板模型是指使用接口制定规则,然后子类根据实现不同的方法内部代码。实现类和接口中的内容保持一致,有利于提高代码的扩展性。

六、内部类

内部类是指在类中的类,根据内部类出现的位置以及特点,可以将内部类分为四类:成员内部类、静态内部类、局部内部类与匿名内部类。

1、成员内部类

成员内部类我觉得有点类似成员变量,只有在外部类的对象 创建之后才能创建成员内部类的对象,当然,内部类可以直接访问外部类的成员,包括私有,因为外部类的对象已经创建了,但是外部类调用内部类的方法,必须先创建对象,因为外部类的对象有了但是内部类的对象不一定有。要创建一个内部类的对象,应该这样写:外部类.内部类 对象名 = new 外部类().new 内部类()。

2、内部类的权限

内部类的权限和成员方法一样,可以有private 默认 protected public,但是外部类只能是public和默认的。

2、静态内部类

静态内部类有点像静态的成员变量,在类加载的时候就创建了,所以静态内部类和外部类之间没有那么强的关系。创建静态内部类不需要先创建外部类。所以,外部类要想调用内部类的方法,必须先创建内部类的对象,同时,内部类要想使用外部类的方法,也必须调用创建外部类的对象。内部类中如果有静态方法,那么内部类也必须时静态的

3、局部内部类

定义在类中的方法中的内部类叫做局部内部类,和匿名内部类的区别就是在方法中需要使用多次,所以不能使用匿名内部类。局部内部类的作用范围仅限于本方法中;局部内部类在访问它所在方法中的局部变量必须用final修饰,因为普通的局部变量的生命周期是跟着方法走的,方法弹栈了局部变量也就消失了,使用final修饰后局部变量就变成了常量,方法弹栈后常量依然存在。

4、匿名内部类

匿名内部类是局部内部类的简写形式,一般用于定义接口的或者类的子类,匿名内部类就是没有名字的内部类。

4.1 使用

七、异常

1、分类

2、异常的处理

3、注意事项

4、自定义异常

继承Exception必须抛出,需要在编译前处理;继承RuntimeException不需要抛出,编译前不需要处理。

八、二维数组

二维数组就是在数组中存放数组,外层数组中存放的是数组的引用,和一维数组一样,初始化方式也可以分为静态初始化与动态初始化。静态初始化就是程序员自己指定数组中的内容,长度由JVM自行判断;动态初始化用户指定数组的长度,由JVM自行提供默认值。

九、权限修饰符

权限修饰符是为了确定类或者类成员的使用范围,按照权限从大到小:public、protected、默认、private。

注意:Java中的包其实就是文件夹的意思,是为了解决相同类名的问题。在我们写程序的时候默认是使用当前包下的类,如果我们想使用其他包下的类需要使用import关键字导入其他包或者在类的前面写上包名。

十、Object类

Object是Java中所有类的祖先,所有的类都是直接或者间接继承Object类。

1、常用方法

== 和 equals()的区别:

== 是一个比较运算符,既可以比较基本数据类型,也可以比较引用数据类型,比较基本数据类型时比较的是值,比较引用数据类型时比较的是地址。

equals()只能比较引用数据类型,默认比较的是地址,但是可以重写,重写之后比较的就是重写的内容。一般equals与hashCode同步重写,hashCode不同,equals一定不同,但是equals不等,hashCode有可能相等,因为hash算法的问题。

十一、String类

String是引用数据类型,字符串类,不可变字符串。

1、 常用方法

上一篇 下一篇

猜你喜欢

热点阅读