final
final 修饰类,类不能被继承
final 修饰方法,方法不能被重写。
final 修饰变量,变量不能被重新赋值。变量变成常量
抽象类
概念:
A:抽象类和抽象方法必须用abstract关键字修饰
B:抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类或者接口
C:抽象类不能实例化
因为他不是具体的
抽象类有构造方法,但是不能实例化?抽象方法的作用是用于子类访问父类数据的初始化
D:抽象的子类
a:如果不想重写抽象方法,该子类一定是抽象类
b:重写所有的抽象方法,这个时候子类是一个具体的类
抽象类的成员特点:
成员变量:既可以是变量,也可以是常量
构造方法:有。用于子类访问父类数据的初始化。
成员方法:既可以是抽象的,也可以是非抽象的。
抽象类小问题
A:一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有啥意义?
可以,不让该类创建对象
B:abstract不能与那些关键字共存?
private 冲突
final 冲突
static 无意义
package day09;
abstract class L{
public abstract void show();
//非法的修饰符组合:abstract和private
//private abstract void show(); 私有的方法无法被重写
//非法的修饰符组合:abstract和final
//final abstract void show(); final修饰方法,方法无法被重写
//无意义
static abstract void show1(); //通过类名访问一个没有方法体的方法无意义
}
class Zd extends L{
@Override
public void show() {
// TODO Auto-generated method stub
}
public void show1(){
}
}
public class AbstarctDemo2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}