学习总结
本次总结接续上篇总结内容,对JAVA知识的总结如下:
第七章 继承
- equals方法
用于判断两个对象是否相等。
注:“==”只是用于判断两个引用是否指向同一个对象,equals方法用于判断对象的内容是否相同。 - super关键字
- ”super.”
定义:当前对象中父类的部分。
效果:使用后,本类中内容不可访,来自父类的内容受访问修饰符影响。
用途:经常在方法重写又企图调用父类中的实现时使用。 - “super()”
定义:父类的构造。
效果:使用后,本类内容不可访,来自父类的构造可访(形参对应)。
用途:经常在继承父类后不清楚如何产生父类原有构造时调用。
注:super()和this()一样都必须写在构造中代码的第一行。
- ”super.”
- final关键字
- final类:一个类可以声明为最终类的。最终类不能被继承。
- finai方法:一个方法可以声明为最终的。最终方法不能被重写。
第八章 类的高级概念
- 访问修饰符
- public:使用后,被使用的成员对外公开,可以被其他任何对象访问。
- protected:使用后,被使用的成员A可以被同一包中的其他类及成员A的子类访问,不论子类在哪个包中。
- 默认级别:使用后,被使用的成员可以被同一包中的其他类所访问。
- private:只有类本身可以访问,不对外公开。
注意:访问权限:public>protected>默认>private
- 封装
- 概念:使用private定义成员,同时定义public方法访问 成员的技术,也被称为数据隐藏。
- 好处:1. 类的成员变量可以称为只读或者只写的;2. 类可以对存储在其成员变量中的内容有一个整体控制;3.类的用户不需要知道类是如何存储数据的。
- 静态成员
关键字STATIC声明的成员为全局的,与对象无关。
- 运行:加载期,内存运行前即加载到内存数据段静态区。
- 调用静态方法可以直接调用,不需要new对象。
- 静态代码块
经常用于类加载前的准备工作代码,大型项目常见。 - 实例初始化块
在对象产生的时候被自动运行,每产生一次对象被执行一次。 - 内部类
- 静态内部类
可以引用外部类的静态成员变量和静态方法,但是不能引用外部类的普通成员。 - 成员内部类
可以调用外部类的所有成员,但是只有创建了外部类的对象后,才能引用外部的成员。 - 局部内部类
需要将要调用的局部变量定义为final的。 - 匿名内部类
- 静态内部类
第九章 多态和抽象
- 多态:多态指的是编译时类型变化,而运行时类型不变。
- 分类:多态分两种:
① 编译时多态:编译时动态重载;
② 运行时多态:指一个对象可以具有多个类型。 运行时多态的三原则:(应用时为覆盖)
1、 对象不变;(改变的是主观认识)
2、 对于对象的调用只能限于编译时类型的方法,如调用运行时类型方法报错。
在上面的例子中:Animal a=new Dog();对象a的编译时类型为Animal,运行时类型为dog。
注意:编译时类型一定要为运行时类型的父类(或者同类型)。
对于语句:Dog d=(Dog)a。将d强制声明为a类型,此时d为Dog(),此时d就可以调用运行时类型。注意:a和d指向同一对象。
3、 在程序的运行时,动态类型判定。运行时调用运行时类型,即它调用覆盖后的方法。关系运算符:instanceof
instanceof Animal;(这个式子的结果是一个布尔表达式)
例如: a instanceof Animal返回 True,
a instanceof Dog也返回 True,
1. instanceof用于判定是否将前面的对象变量赋值后边的类名。
2. Instanceof一般用于在强制类型转换之前判定变量是否可以强制转换。
如果Animal a=new Animal();
Dog d=Dog()a;
此时编译无误,但运行则会报错。
Animal a=new Dog()相当于下面语句的功能:
Animal a=getAnimal();
Public static Animal.getAnimal;
Return new Dog();
封装、继承、多态为面向对象的三大基石(特性)。
运行时的动态类型判定针对的是方法。运行程序访问的属性仍为编译时属性。
未完待续