第十一天
this和super概括性总结
this:表示的是当前类队形的地址值引用
super:代表的是父类对象的地址值引用(代表父类对象的空间标识)
this.变量名:访问的是本类中的成员变量;
super.变量名:访问的是父类中的成员变量
this(); 访问的是本类中的无参构造方法
super(); 访问的是父类中的无参构造方法
this(xxx); 访问的是本类中的有参构造方法
super(xxx);访问的是父类有参构造方法
this.方法名();访问的是本类的成员方法
super.方法名();访问的是父类中的构造方法
方法的重写和final关键字
重写
方法重写发生在父类与子类之间,主要的几大特征是:
- 方法名相同
- 参数列表相同
- 具体的实现不同
- 重写的时候访问权限不能比子类低
- 构造方法不能重写
class fu {
public void ff(){
System.out.println("我是父类方法")
}
}
class zi extends fu{
public void ff(){
System.out.println("我是重写的子类方法")
}
}
public class Test{
public static void main(String[] args) {
fu f = new fu();
f.ff();
zi z = new z();
z.ff();
}
}
//输出:
//我是父类方法
//我是重写的子类方法
final
final关键字作为一类特殊的关键字我们可以用它来修饰成员变量,方法,类,以及本地变量.
当修饰变量时必须被赋予初值切不能被改变,修饰引用的变量时该引用变量不能再指向其他对象.
开发中一般定义常量时都会使用public static final 常量类型 xxx = 常量值自定义常量.
当final修饰方法的时候该方法不能被子类重写,被final修饰的类不能被继承,Java中有许多类是final来修饰的,比如String,Interger.
与final关键字相近的finally和finalize的区别,finally是处理异常的时候会用到的try…catch…finally
finalize():跟垃圾的回收器有关系,回收内存中没有更多引用的对象.
多态
什么叫多态?顾名思义就是事物不同时刻的多种状态就叫做多态.多态是继封装,继承二者之后的,面向对象的第三大特性.
多态的具体表现为:
- 必须有继承关系
- 必须存在方法重写(子类覆盖父类的功能)
- 必须有父类引用指向子类对象
多态的格式//
父类 对象名 = new 子类();
多态成员的访问特点
针对成员变量时,编译看左,运行看左(使用父类的东西)
针对多态中的成员方法时,编译看左,运行看右(子类重写父类方法)
针对静态成员方法和静态成员变量时,编译看左,运行看左(海慧寺跟普通的静态方法一样,直接用类名.方法名()的方式去访问)
针对构造方法时,因为存在继承关系,所以还需要先让父类完成初始化,然后再对子类进行数据初始化(分层初始化)
class a {
void say(){
System.out.println("I'm a");
}
}
class b extends a{
@Override
void say() {
System.out.println("I'm b");
}
}
class c extends a{
@Override
void say() {
System.out.println("I'm c");
}
}
public class Test8 {
public static void main(String[] args) {
a a = new a();
a.say();
a b = new b();
b.say();
a c = new c();
c.say();
}
}
//输出
//I'm a
//I'm b
//I'm c
多态的优点就是提供了代码的复用性,由继承来保证,同时也提高了代码的扩展性,由多态来保证.