1. 什么是类?什么是对象?
现实生活中是由很多很多对象组成的,基于对象抽出了类
对象:软件中真实存在的单个个体
/
东西
类:类型
/
类别,代表一类个体
类是对象的模板/模子,对象是类的具体的实例
类中可以包含:
对象的属性
/
特征
-----------------------------
成员变量
对象的行为
/
动作
/
功能
----------------------
方法
一个类可以创建多个对象
2. 如何创建类?如何创建对象?如何访问成员?
3. 方法的签名:方法名+参数列表
4. 方法的重载(overload/overloading):
-------------------------------方便用户的调用
发生在同一类中,方法名相同,参数列表不同
编译器在编译时会根据方法的签名自动绑定方法
5. 构造方法:构造函数、构造器、构建器
-----------------------
复用给成员变量赋初值的代码
作用:给成员变量赋初值
与类同名,没有返回值类型
(
连
void
都没有
)
在创建
(new)
对象时被自动调用
若自己不写构造方法,编译器默认提供一个无参构造方法,若自己写了构造方法,则不再默认
提供
构造方法可以重载
6. this:指代当前对象,哪个对象调用方法它指的就是哪个对象
只能用在方法中,方法中访问成员变量之前默认有个
this.
this
的用法:
this.
成员变量名
---------------------------
访问成员变量
当成员变量与局部变量同名时,若想访问成员变量,则
this
不能省略
this.
方法名
()--------------------------------
调用方法
(
一般不用
)
this()------------------------------------------
调用构造方法
(
一般不用
)
7. null:表示空,没有指向任何对象。
若引用的值为
null
,则该引用不能进行任何点操作了,若操作则发生
NullPointerException
空
指针异常。
8. 引用类型数组:
给元素赋值时,需要
new
个对象
若想访问对象的数据,需要通过数组元素去打点来访问
9. 继承:
作用:代码复用
通过
extends
来实现继承
超类
/
父类:共有的属性和行为
派生类
/
子类:特有的属性和行为
派生类可以访问派生类的
+
超类的,但超类不能访问派生类的
一个超类可以有多个派生类,但一个派生类只能继承一个超类
-----------
单一继承
继承具有传递性
java
规定:构造派生类之前必须先构造超类
在派生类的构造方法中若没有调用超类的构造方法,则默认
super()
调用超类的无参构造
方法
在派生类的构造方法中若自己调用了超类的构造方法,则不再默认提供
注意:
super()
调用超类构造方法,必须位于派生类构造方法的第一行
10. super:指代当前对象的超类对象
super
的用法:
super.
成员变量名
-------------------------
访问超类的成员变量
super.
方法名
()-----------------------------
调用超类的方法
super()---------------------------------------
调用超类的构造方法
11. 向上造型:
--------------------------------------------
代码复用
超类型的引用指向派生类的对象
能点出来什么,看引用的类型
----------------
这是规定,记住就
OK
何时向上造型:
多种角色能干的事都一样的时候,可以将多种角色统一造型到超类数组中,实现代
码复用
eg:
学生
/
老师
/
医生都是输出名字
+
问好
------
干的事都一样,
就可以将学生
/
老师
/
医生统一造型到
Person
数组中,这样一个
for
即可
-------
代
码复用
12. 方法的重写(override/overriding):
重新写、覆盖
发生在父子类中,方法名相同,参数列表相同
重写方法被调用时,看对象的类型
-----------------------
这是规定,记住就
OK
重写需遵循
"
两同两小一大
"
原则:
-------------------------
了解,一般都是一模一样的
两同:
方法名相同
参数列表相同
两小:
派生类方法的返回值类型小于或等于超类方法的
void
和基本类型时,必须相等
引用类型时,小于或等于
派生类方法抛出的异常小于或等于超类方法的
------------------------
一大:
派生类方法的访问权限大于或等于超类方法的
------------------------
13. 重写与重载的区别:
----------
常见面试题
重写:发生在父子类中,方法名相同,参数列表相同
重载:发生在同一类中,方法名相同,参数列表不同
14、package和import
package:
作用;避免类的命名冲突(不同的包里,类名可以同名。全名是 包名.类名)
同包中的类不能同名,不同包中的类可以同名
包名常常有层次结构
建议包名的所有字母用小写。
import:
导入类
同包中的类可以直接访问
不同包中的类不能直接访问;访问需要使用import导入类,再使用类
(或者使用类的全称,繁琐,不建议)
注意:
1、顺序:package---import----class
2、import 包名.*-------表示导入了包中的所有类,但不建议使用*(*影响性能)
建议使用哪个类就导入哪个类
15、访问控制修饰符
public 公开的
private
protected
默认
16、final最终的、不能改变的
修饰变量---变量不能被改变
修饰类-----类不能被继承
修饰方法---方法不能被重写
17、static 静态的
静态变量:static、方法区、类,需要通过类名点来访问
所有数据所共享的数据(图片、音频、视频)
静态方法;static、方法区、类,类名点访问,
没有this,不能直接访问实例变量
方法的操作与对象无关--不需要访问对象的属性和行为
静态块:static、类、类被加载时自动执行,一次
初始化静态资源(图片、音频、视频)
18、static final 常量(应用率高)
19、抽象方法
20、抽象类
21、成员内部类
类中套类,外面的类称为外部类,内部的类称为内部类。
22、匿名内部类
23、接口