abstract、final、static、private是否能一起使用?为什么?

abstract、final、static、private是否能一起使用?为什么?

抽象 abstract:
abstract修饰符可以用于类、方法、属性、事件和索引指示器(indexer),表示其为抽象成员,抽象方法是没有方法体的方法。
(1)用abstract关键字修饰的方法是抽象方法,抽象方法无需实现。
例:
abstract class Test {
public void a() {
// 代码省略
}
public abstract void b();
}
== 如果JAVA类的任何一个方法是abstract的,则类本身必须是abstract的。==
(2)当一个类被声明为abstract时,这个类被称为抽象类。所谓的抽象类就是没有实例对象的类。
(3)继承自抽象类的子类必须覆盖实现父类中的抽象方法 。
例:
abstract class T {
public void a() {
// 代码省略
}
public abstract void b();
}
public class Test extends T{
@Override
public void b() {
// TODO 自动生成的方法存根
}
}

abstract、final、static、private是否能一起使用?

abstract class Test {
// 类型 Test 中的抽象方法 只能设置可见性修饰符“public”或“protected”中的一个
// private abstract void a();
// public final abstract void b();
// public static abstract void c();
}

1.private关键字
(1)修饰成员:可以修饰成员变量和成员方法
(2)特点:被private修饰后的成员只能在本类中被访问
abstract不能和private一起使用:private修饰后的方法为私有方法,只能在本类中被使用,子类不能继承,而abstract子类必须覆盖实现父类中的抽象方法,相互冲突,不能使用

2.final关键字
(1)final类:final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。
(2)final方法:如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。
(3)final变量(常量):用final修饰的成员变量表示常量,只能被赋值一次,赋值后值无法改变。
abstract不能和final一起使用:final修饰后的方法,锁定方法,防止任何继承类修改它的意义和实现,而abstract子类必须覆盖实现父类中的抽象方法,相互冲突,不能使用

3.static关键字
(1)为特定的数据类型或对象分配单一的存储空间.
(2)实现某个方法或属性与类关联在一起,被static修饰的变量和方法,可以通过类名.变量名或类名.方法名直接引用。
abstract不能和static一起使用:static修饰的是静态方法,可以直接被类调用;而abstract修饰的类中只有方法名,无方法体,不能被直接调用,故abstract不能和static一起使用

你可能感兴趣的:(abstract、final、static、private是否能一起使用?为什么?)