abstract关键字(abstract不可以和哪些关键字共存)

本文目录
- abstract不可以和哪些关键字共存
- 为什么要在定义抽象类时使用abstract关键字
- 多态里,父类是抽象类和不是抽象类有什么区别
- java全部关键字及其每个用法解释
- 在java里创建接口时,有没有必要在接口前面加上abstract的关键字呢
- abstrct关键字
abstract不可以和哪些关键字共存
1).private :因为一个abstract方法需要被重写,所以不能修饰为private;
2).final:因为一个abstract方法需要被重写。被final修饰的方法是不能被重写的,所以不能同final共存;
3).static:因为一个abstract方法没有方法体。静态方法需要对方法体执行内容分配空间,所以不能同static共存;(abstract是没有实现的,不能产生对象,而是static是属于类的,类本身是已经存在的对象)
4).synchronized: 是同步的,然而同步需要具体的操作才能同步,但, abstract是只有声明没有实现的(即,使用synchronized关键字的是需要有具体的实现同步的操作的,但是使用abstract是只有声明而没有实现的,这样就产生了冲突)
5).native:他们本身的定义就是冲突的,native声明的方法是移交本地操作系统实现的,而abstract是移交子类对象实现的,同时修饰的话,导致不知道谁实现声明的方法
为什么要在定义抽象类时使用abstract关键字
这是个规范,让程序知道这个类是抽象类。
类前面都可以加修饰符,abstract只是其中的一种,如果你不加,就默认为一般的对象,可以实例化。如果加了修饰符就表明这个类是特殊的,具有自己的特性。
否则你不定义程序如何判断此类到底是抽象类?还是静态类?或者就是一个普通的类呢?
这种问题不用太纠结。
多态里,父类是抽象类和不是抽象类有什么区别
抽象类: 将一个方法声明为抽象方法有两个结果:
类也必须声明为抽象类,如果一个类包含了一个抽象方法,那么该类也必须是抽象类;
任何子类必须重写抽象方法,除非子类本身也是抽象类;
关键字: abstract;用这个关键字修饰类的时候,表示这个类是抽象类;
注: 抽象类不能产生对象,它只能充当父类;
有抽象方法的类一定是抽象类;
抽象类不一定有抽象方法;
抽象类除了类有abstract修饰符,它内部跟普通类一样,可以有:属性、构造、已经实现的方法;
例:
public class Boy {private Girl myGirl;
public Girl getMyGirl() {
return myGirl;
}
public void setMyGirl(Girl myGirl) {
this.myGirl = myGirl;
}
public void kiss(){
System.out.println(“让我亲一个嘛~~~“);
this.myGirl.response();
}
}public abstract class Girl {
//abstract关键字表示抽象
//当它修饰方法的时候,表示类有这个方法,但是不能确定这个方法的实现,应该由它的子类去确定
public abstract void response();
}public class PureGirl extends Girl {
//子类在继承抽象类的时候,必须重写抽象类的抽象方法。
//否则这个子类也必须是抽象类。
public void response() {
// TODO Auto-generated method stub
System.out.println(“嗯~~~你好坏~~~“);
}
}public class BoldGirl extends Girl {
//子类在继承抽象类的时候,必须重写抽象类的抽象方法。
//否则这个子类也必须是抽象类。
public void response() {
// TODO Auto-generated method stub
System.out.println(“老娘飞起来一脚~~~~“);
}
}public class TestLove {
/**
* @param args
*/
public static void main(String args) {
// TODO Auto-generated method stub
Boy boy = new Boy();
System.out.println(“请选择你喜欢的女孩类型:1、纯情;2、野蛮。“);
int choice = new Scanner(System.in).nextInt();
Girl girl = null;
switch(choice){
case 1:
girl = new PureGirl();break;
case 2:
girl = new BoldGirl();break;
}
boy.setMyGirl(girl);
boy.kiss();
}
}
java全部关键字及其每个用法解释
Abstract 抽象的
一个Java语言中的关键字,用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承。一个抽象类可以使用抽象方法,抽象方法不需要实现,但是需要在子类中被实现
break
一个Java的关键字,用来改变程序执行流程,立刻从当前语句的下一句开始执行从。如果后面跟有一个标签,则从标签对应的地方开始执行
case
Java语言的关键字,用来定义一组分支选择,如果某个值和switch中给出的值一样,就会从该分支开始执行。
catch
Java的一个关键字,用来声明当try语句块中发生运行时错误或非运行时异常时运行的一个块。
char
Java语言的一个关键字,用来定义一个字符类型
continue
一个Java的关键字,用来打断当前循环过程,从当前循环的最后重新开始执行,如果后面跟有一个标签,则从标签对应的地方开始执行。
do
一个Java语言的关键字,用来声明一个循环,这个循环的结束条件可以通过while关键字设置
double
一个Java语言的关键字,用来定义一个double类型的变量
else
一个Java语言的关键字,如果if语句的条件不满足就会执行该语句。
final
一个Java语言的关键字。你只能定义一个实体一次,以后不能改变它或继承它。更严格的讲:一个final修饰的类不能被子类化,一个final修饰的方法不能被重写,一个final修饰的变量不能改变其初始值。
finally
一个Java语言的关键字,用来执行一段代码不管在前面定义的try语句中是否有异常或运行时错误发生。
float
一个Java语言的关键字,用来定义一个浮点数变量
for
一个Java语言的关键字,用来声明一个循环。程序员可以指定要循环的语句,推出条件和初始化变量。
if
Java编程语言的一个关键字,用来生成一个条件测试,如果条件为真,就执行if下的语句。
implements
Java(TM)编程语言的一个关键字,在类的声明中是可选的,用来指明当前类实现的接口。
import
Java(TM)编程语言的一个关键字,在源文件的开始部分指明后面将要引用的一个类或整个包,这样就不必在使用的时候加上包的名字。
instanceof
一个二操作数的Java(TM)语言关键字,用来测试第一个参数的运行时类型是否和第二个参数兼容。
int
Java(TM)的一个关键字,用来定义一个整形变量
Java(TM)的一个关键字,用来定义一系列的方法和常量。它可以被类实现,通过implements关键字。
long
Java语言的一个关键字,用来定义一个long类型的变量。
private
Java语言的一个关键字,用在方法或变量的声中。它表示这个方法或变量只能被这个类的其它元素所访问。
protected
Java语言的一个关键字,在方法和变量的声明中使用,它表示这个方法或变量只能被同一个类中的,子类中的或者同一个包中的类中的元素所访问。
public
Java语言的一个关键字,在方法和变量的声明中使用,它表示这个方法或变量能够被其它类中的元素访问。
return
Java语言的一个关键字,用来结束一个方法的执行。它后面可以跟一个方法声明中要求的值。
short
Java语言的关键字,用来定义一个short类型的变量。
static
Java语言的关键字,用来定义一个变量为类变量。类只维护一个类变量的拷贝,不管该类当前有多少个实例。“static“ 同样能够用来定义一个方法为类方法。类方法通过类名调用而不是特定的实例,并且只能操作类变量。
this
Java语言的关键字,用来代表它出现的类的一个实例。this可以用来访问类变量和类方法。
throw
Java语言的关键字,允许用户抛出一个exception对象或者任何实现throwable的对象
throws
Java语言的关键字,用在方法的声明中来说明哪些异常这个方法是不处理的,而是提交到程序的更高一层。
transient
Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。
try
Java语言的关键字,用来定义一个可能抛出异常语句块。如果一个异常被抛出,一个可选的catch语句块会处理try语句块中抛出的异常。同时,一个finally语句块会被执行,无论一个异常是否被抛出。
void
Java语言的关键字,用在Java语言的方法声明中说明这个方法没有任何返回值。“void“也可以用来表示一句没有任何功能的语句。
volatile
Java语言的关键字,用在变量的声明中表示这个变量是被同时运行的几个线程异步修改的。
while
Java语言的一个关键字,用来定义一段反复执行的循环语句。循环的退出条件是while语句的一部分。
关于break和continue。
continue语句与break语句相关,但较少用到。continue语句用于使其所在的for、while或do-while语句开始下一次循环。在while与do-while语句中,continue语句的执行意味着立即执行测试部分;在for循环语句中,continue语句的执行则意味着使控制传递到增量部分。
在java里创建接口时,有没有必要在接口前面加上abstract的关键字呢
接口里的方法都是抽象的,但如果一个接口本身是抽象的话,其他的类就不能直接实现这个接口,也就是说
Class X implements SessionAware{}
这样的代码是不合法的,抽象借口是为了让其他接口去继承的,比如这样
interface X extends SessionAware{...}
所以,抽象接口是有必要的。
abstrct关键字
abstrct抽象的
abstract 不可以和static、virtual、final、native一起使用
声明为 abstract 成员可以不包括实现代码,但只要类中还有未实现的抽象成员(抽象方法),那么这个类就是一个抽象类,抽象类的对象就不能被实例化,通常用于强制继承类必须实现某一成员.抽象类是必须要派生子类的。并且,如果子类没有实现抽象基类的所有方法,则子类也成为一个抽象类。
抽象类
当一个类被声明为abstract时,这个类被称为抽象类。所谓的抽象类就是没有实例对象的类。
java中定义抽象类是出于相同考虑。抽象类是他的所有子类的公共属性的集合,所以抽象类的一大优点就是充分利用公共属性来提高开发和维护程序的效率。
抽象方法
作为修饰符,abstract声明了一种没有具体对象的,出于组织概念的层次关系需要而存在的抽象类;作为类方法修饰符,abstract则声明了一种仅有方法头,而没有具体的方法体和操作实现的抽象方法。
如:
abstract boolen goVacation(int days);
可见,abstract方法只有方法头得声明,而用一个分号来代替方法体得定义;至于方法体得具体实现,那是由当前类的不同子类在他们各自的类定义中完成的。
public abstract class MyAbstractClass {
public void test1(){ // 一个正常的方法
}
public abstract void test2(){ // 一个抽象方法。
}
提示,如果JAVA类的任何一个方法是abstract的,则类本身必须是abstract的。

更多文章:
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00








