关于static abstract final synchronized

今天有个朋友是学C++的,学校有个java的考试,他问了我关于static abstract final synchronized的一些问题,突然觉得很有必要整理一下,顺便还想说一下向上转型,向下转型。

1.static 

通常在创建类的实例时,都会创建自己的实例变量,但是在变量的声明中可以用static修饰,表示属于类的本身,独立于类产生的任何对象。这种变量称为静态变量(静态属性)。

定义方法的时候也可以用static修饰,表示这个方法属于类本身。

静态函数里只能调用其他的静态函数或者静态变量,否则会造成编译错误,静态成员函数也不可以使用this和super,因为他们是和类的对象相关联的,静态变量和静态函数不需定义就可直接使用,最常见的就是输出语句

System.out.println("abc");

并没有创建System的实例,是因为println是System类中的静态方法,可以直接调用。

2.final

final意为最终

被final修饰的类不能被继承,被final修饰的方法不能被重写,被final修饰的常量不能更改。

类不能同时被修饰为abstract和final 因为二者相互矛盾,会在第三点中说明。

3.abstract

抽象类当中可以没有抽象方法,但要是有抽象方法那就必是抽象类。

abstract必须在class前面,位置不可更改。

如果子类实现了父类当中的所有abstract方法也需将子类定义为抽象类。

abstract不能修饰构造方法。

抽象类不能实例化,抽象类的构造函数是在创建子类对象的时候被调用的。

多说一嘴,接口不能实例化,但可以定义引用变量。

下面说一下为什么abstract都不能与哪些关键字一起用。

Abstract修饰过的类必须用过继承或者接口来实现重写否则就是个摆设

final不可以被继承,所以不能一起用

private是在类得内部,重写时是访问不到的,故不能连用。

static静态的,随着类的创建而创建,销毁而销毁,但abstract是动态的,需要通过继承或接口来实现,故不能连用。

4.synchronized

 

synchronized:用于防止多个线程同时调用一个对象的该方法,与static连用可防止多个线程同时调用一个类的该方法。

synchronized也不能与abstract连用,synchronized需要直接被调用。

接下来说一说,向上转型和向下转型。

向上转型:子类的引用对象转化为父类的对象。Father f = new Son();

向下转型:父类的引用对象转换为子类的对象。Son s = (Son)f;

 

你可能感兴趣的:(关于static abstract final synchronized)