抽象类&final

来源:互联网 发布:淘宝怎么改购买数量 编辑:程序博客网 时间:2024/06/13 23:27

1、final关键字

*可以修饰类,方法,变量

*final修饰的类不可以被继承

*final修饰的方法不可以被覆盖

*final修饰的变量是一个常量,只能被赋值一次

*内部类只能访问被final修饰的局部变量

2、抽象类

抽象类的特点

*方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰

抽象方法必须定义在抽象类中,该类必须被abstract修饰

*抽象类不可以被实例化,为什么?因为调用抽象方法没有意义

*抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化

否则,这个类还是抽象类

抽象类又构造函数吗?有,用于给子类对象进行初始化。

抽象类中可以不定义抽象方法?可以的,但是很少见,目的就是不让该类创建对象。AWT的适配器对象就这种类

通常这个类中的方法有方法体,但是却没有内容。

abstract class Demo {

void show(){}

}

抽象关键字不可以和哪些关键字共存?

private 不行,私有的子类没有办法覆盖,

static不可以 

final不行(final方法不能覆盖)


抽象类和一般类的异同点?

相同点:都是用来描述事物的,都在内部定了成员

不同:抽象类描述事物的信息可能不足,一般类中不能定义抽象方法,抽象类中可以定义抽象方法。一般类可以实例化,抽象类不可以实例化

抽象类一定是个父类?是的,因为需要子类覆盖其方法后才可以对子类实例化。


3、接口

格式interface{}

接口中的常见成员:而且这些成员都有固定的修饰符

全局常量和抽象方法


接口的特点

*接口是对外的暴露的规则

*接口是程序的功能扩展

*接口的出现降低耦合性

*接口可以用来多实现

*接口与接口之间可以有继承关系


抽象类和接口特点

相同点:都是不断向上抽取而来

不同点:

*抽象类需要被继承,而且只能单继承,接口需要被实现,可以多实现

*抽象类中可以定义抽象方法和非抽象方法,子类继承后可以直接使用非抽象方法

接口中只能定义抽象方法,必须由子类来实现

*抽象类的继承是Is a关系,接口的实现是like a关系