黑马程序员技术交流社区

标题: 基础总结 Day08 [打印本页]

作者: xp2015    时间: 2015-8-19 22:57
标题: 基础总结 Day08
继承(extends)
定义:抽取多个类中存在的相同属性和行为,放到单独的类中,那么多个类则无需再定                义这些属性和行为,只需要继承那个类即可。
优点:
A. 提高代码的复用性
B. 让类与类之间产生了关系
C. 多态的前提。
特点:
A. java只支持(类的)单继承,不支持多继承(可能出现调用不明确的问题,在        继承的类中可能拥有相同的方法或者属性,导致调用时不知道调用哪一个)
B. Java支持(类的)多(层)重继承

子类可以直接访问父类中的非私有的属性(成员变量)和行为(成员方法)

子类要想访问父类是私有成员变量和方法,可以通过父类的公共访问方式进行访问

Java支持多继承:接口

使用场景:
继承体现出一种关系。A is a B 前者为子类,B为父类
注意:不要仅仅为了获取部分功能,而去使用继承。
如果输出父类的成员变量 则可在父类构造方法进行访问

this和super

定义:
This:本类的一个对象,指的是调用本方法的那个对象;
Super:一个内存空间的标识,不是对象。
场景:
this:解决局部变量隐藏成员变量的问题(指出成员变量);
super:子类想要调用父类中和自己命名相同的方法和属性时
区别:
This:从本类的成员的位置开始查找
Super:(代表父类的内存空间的标识)从父类的成员位置开始查找
使用:
成员变量:
This.变量 -------  当前类的变量
Super.变量 -------  父类的变量
构造方法:
This(参数)------  本类的构造方法
This(参数) ------ 父类的构造方法
成员方法:
This.方法名() -----  本类的方法
Super.方法名() ----- 父类的方法

在子类中,输出局部范围的值,输出成员范围的值,输出父类成员变量的值,该怎么办?
A. 局部范围的值,直接输出变量名即可。
B. 成员范围的值 输出this.变量名 即可
C. 父类成员变量的值 输出super.变量名 即可

重载和重写

方法重写(覆盖、复写):
定义:在子父类关系继承中,子父类中,出现方法相同的情况。方法名、参数列表                以及返回值类型要保持一致。
方法重载:
定义:同一类中,方法名相同,方法参数列表存在不同(参数的类型或者个数),                与返回值类型无关
注意:
A. 父类中的私有方法不可以被覆盖(重写)(注意私有属性)
B. 子类方法访问权限一定要大于等于父类的访问权限
C. 静态方法只能被静态方法重写。
D. 子类抛出的异常要小于等于父类抛出的异常
E. 覆盖的应用:
当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以复写父类中的方法,这样,既沿袭了父类的功能,又定义了子类特有的内容

如果两个函数只有返回值类型不同,不属于重载,会造成函数调用不明确!

子父类中的构造方法

特点:子类的构造方法默认都去访问父类的无参构造方法
  在子类中的构造方法中都有一行默认语句:super();

原因:子类继承父类,就拥有了父类的非私有数据,那么这些数据的初始化,需要通过                父类的构造函数来完成。所以,会去先调用父类的构造方法对数据初始化。并没有                创建父类对象!

构造方法是不可以重写的(重写的话,要保持方法名和类名一致,但是,子父类的构造        方法名都要和本类名一致,所以两者冲突),也不可以重载(重载要求方法名一致)。

父类中没有无参的构造方法:
A. 可以通过super(参数)去访问父类中的带参构造方法
B. 可以通过this(参数...)去访问本类中的其他构造方法。

代码块

静态代码块:
特点:只执行一次,初始化成员。
构造代码块:
作用:把所有构造方法中的共同内容定义在构造代码块中
局部代码块:定义在方法中的代码块
作用:让变量尽可能早的从内存中消失,提高效率
代码块的面试题:
执行顺序:静态代码块>构造代码块>构造方法
A. 父类优先于子类
B. 静态优先于非静态
C. 构造代码块优先于构造方法
父类静态代码块 子类静态代码块 父类构造代码块 父类构造方法 子类构造代码块块 子类构造函数

如何使用父类的私有成员变量:
在类中构造公共访问方法,通过公共访问方法访问父类的私有成员变量

Final 关键字

最终的意思。
A. 修饰类,修饰的类不能被继承
B. 修饰成员变量,修饰的成员变量实际是一个常量,必须赋值,且不能重新赋值
C. 修饰成员方法,成员方法不能被重写
Final修饰的变量其实是一个常量
常量:字面值常量、定义常量
定义final修饰的数组 表示其指向的内存地址不会发生改变

作者: 大木木    时间: 2015-8-19 23:06
前面几天的咧~
作者: xp2015    时间: 2015-8-19 23:15
大木木 发表于 2015-8-19 23:06
前面几天的咧~

还木发
作者: 大木木    时间: 2015-8-19 23:17
xp2015 发表于 2015-8-19 23:15
还木发

既然决定做这个总结最好就天天坚持吧,要不米有什么效果加油!!!加油!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2