数组
(1)数组:存储同一种数据类型的多个元素的容器。
(2)特点:每一个元素都有编号,从0开始,最大编号是长度-1。
编号的专业叫法:索引
数组的初始化
A:动态初始化
只给长度,系统给出默认值
举例:int[] arr = new int[3];
B:静态初始化
给出值,系统决定长度
举例:int[] arr = new int[]{1,2,3};
简化版:int[] arr = {1,2,3};
成员变量和局部变量的区别:
1:成员变量直接定义在类中。
局部变量定义在方法中,参数上,语句中。
2:成员变量在这个类中有效。
局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。
3:成员变量存在于堆内存中,随着对象的产生而存在,消失而消失。
局部变量存在于栈内存中,随着所属区域的运行而存在,结束而释放。
方法:就是完成特定功能的代码块。
格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
方法体语句;
return 返回值;
}
注意:返回值类型:结果的数据类型
参数列表:参数的个数及对应的数据类型
其中void返回值类型的语句单独调用即可
方法重载(overload)
在同一个类中,方法名相同,参数列表不同。与返回值无关。
参数列表不同:
参数的个数不同。
参数的对应的数据类型不同。
@个人感觉类似于无参构造和带参构造
继承extends
(1)把多个类中的相同的属性和行为进行抽取,封装到一个类中,
然后再建立新类的时候,不需要从头做起,继承刚才定义的那个类即可。
(2)好处:
A:提高代码的复用性。
B:让类与类之间产生了一个关系,是多态的前提。
(3)什么时候使用继承?
A:如果类之间存在着:
is a 的关系,就可以考虑使用继承。
B:不要为了继承部分功能,而去使用继承。
(4)继承的特点:
A:Java只支持单继承,不支持多继承。
为什么?如果支持多继承,就会有调用不明确的问题。
B:Java支持多层(重)继承。
(5)super和this的区别?
A:super是一个关键字,代表父类的存储空间标识。(可以理解为父亲对象的引用)
B:它和this的用法相似
a:成员变量
this.变量 -- 本类的
super.变量 -- 父类的
b:构造方法
this(...) -- 本类的
super(...) -- 父类的
c:成员方法
this.方法名() -- 本类的
super.方法名() -- 父类的
(6)子父类中成员变量的用法:
A:名称不同,这个太简单了。
B:名称相同,子类对象的在使用的时候
先找子类局部范围
再找子类成员范围
最后找父类成员范围
父类的父类成员范围
(7)子父类中成员方法的用法:
A:名称不同,这个太简单了。
B:名称相同,子类对象的在使用的时候:
先找子类的
再找父类的
C:方法重写
在子类中,方法声明(修饰符,返回值,方法名,参数列表)相同的情况
注意事项:
a:父类中私有方法是不能被重写
b:子类方法的访问权限一定要大于等于父类的访问权限
c:静态只能重写静态。(这个不能算,因为静态跟类相关)
子父类中构造方法的用法:
子类的初始化过程中,首先回去执行父类的初始化动作。
因为子类的构造方法中默认有一个super()。
为什么?子类要使用父类的成员变量,这个初始化,必须在子类初始化之前完成。
所以,子类的初始化过程中,会先执行父类的初始化。
如果父类没有无参构造方法
使用super调用父类的带参构造。推荐方式。
使用this调用本身的其他构造。
|
|