一、方法覆盖(重写)
@Override
在子类中可以定义与父类中同名、同返回值类型、同参数的方法,但实现可以不同,这时子类的方法就叫做覆盖或重写了父类的方法。
在这里需要好好的理解重写和重载的区别。
二、Super关键字的应用
1、在子类中调用父类中被覆盖的方法
2、在子类中调用父类的构造方法
3、在子类中访问父类中被隐藏的成员变量
例:
package com.demo;
class Super{
int x,y;
public Super () {
System.out.println("创建父类对象");
setXY(5,5);
}
public void setXY(int x, int y){
this.x=x;
this.y=y;
}
public void display (){
System.out.println("x="+x+",y="+y);
}
}
class sub extends Super{
int x,z; //x隐藏了父类中的x
public sub(){
this (10,10);
System.out.println("创建子类对象");
}
public sub (int x,int z){
super();
this.x=x;
this.z=z;
}
public void display(){ //重写了父类的方法
super.display(); //子类调用父类方法
System,out.println("x="+x+",y="+y);
System,out.println("super.x="+super.x+"super.y="+super.y);
}
}
public class SuperTest{
public static void main(string[] args){
sub b=new sub();
b.display();
}
}
三、封装性与访问修饰符
在JAVA语言中,对象就是一组变量和方法的封装体,用户只需要通过对象提供的接口与对象进行交互即可。
1、通过包实现封装性,包是最大的封装单位
2、通过类或类的成员访问权限实现封装性
类成员的访问修饰符包括成员变量和方法的修饰符,有4种,依次为privated,public,protected,缺省。
四、防止类扩展和方法覆盖
使用final修饰类、成员变量、方法
1、final修饰类,则该类为最终类,最终类不能被继承。
2、final修饰方法,则该方法不能被子类覆盖
3、final修饰变量,包括类的成员变量、方法的局部变量、方法的参数变量,一旦修饰,则为常值变量,不能改变。
五、抽象类
使用abstract修饰符,抽象方法只有方法的声明没有方法的实例,包含抽象方法的类必须定义为抽象类,抽象类不能实例化,即不能生成抽象类的对象。