您的位置: 文学家马特 > 游戏

Java父类强制转换子类原则,switch case 支持的 6 种数据类型!

2019-09-11来源:文学家马特
Java父类强制转换子类原则,switch case 支持的 6 种数据类型!

我们知道Java中子类转换成父类是没有任何问题的,那父类可以转换成子类吗?

来看下面这段程序:

public

class

TestObjectConvert

{

public

static

void
main
(
String
[]
args
)

{
test1
();
test2
();

}

private

static

void
test1
()

{

Fruit
fruit1
=

new

Fruit
();

Apple
apple1
=

new

Apple
();
apple1
=

(
Apple
)
fruit1
;

// java.lang.ClassCastException

}

private

static

void
test2
()

{

Fruit
fruit1
=

new

Apple
();

Apple
apple1
=

new

Apple
();
apple1
=

(
Apple
)
fruit1
;

}

static

class

Fruit

{

}

static

class

Apple

extends

Fruit

{

}
}

结果是:

test1
:报类转异常;
test2
:转换正常。

所以,想让父类强制转换成子类,不是没有可能,除非父类是子类构造出来的实例,不然是不能强转的。

为什么呢?

如上代码,如果父类实例出来的对象是Orange,Orange当然不能强制转成Apple,所以说父类只有该子类对应的实例才能强转。

今天就讲一下 Java 中的 switch case 语句吧,有忘记的同学正好可以温习一下。

Java 中 switch case 语句用来判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

语法格式如下:

switch
(
expression
){

case
value
:

//语句

break
;

//可选

case
value
:

//语句

break
;

//可选

//你可以有任意数量的case语句

default

:

//可选

//语句
}

这里的 expression 都支持哪些类型呢?

  • 基本数据类型:byte, short, char, int
  • 包装数据类型:Byte, Short, Character, Integer
  • 枚举类型:Enum
  • 字符串类型:String(Jdk 7+ 开始支持)

基本数据类型和字符串很简单不用说,下面举一个使用包装类型和枚举的,其实也不难,注意只能用在 switch 块里面。

// 使用包装类型
Integer
value
=

5
;
switch

(
value
)

{

case

3
:

System
.
out
.
println
(
"3"
);

break
;

case

5
:

System
.
out
.
println
(
"5"
);

break
;

default
:

System
.
out
.
println
(
"default"
);
}
// 使用枚举类型
Status
status
=

Status
.
PROCESSING
;
switch

(
status
)

{

case
OPEN
:

System
.
out
.
println
(
"open"
);

break
;

case
PROCESSING
:

System
.
out
.
println
(
"processing"
);

break
;

case
CLOSE
:

System
.
out
.
println
(
"close"
);

break
;

default
:

System
.
out
.
println
(
"default"
);
}

使用 switch case 语句也有以下几点需要注意。

  1. case 里面必须跟 break,不然程序会一个个 case 执行下去,直到最后一个 break 的 case 或者 default 出现。
  2. case 条件里面只能是常量或者字面常量。
  3. default 语句可有可无,最多只能有一个。

有问题请留言,希望本文能对你有有所帮助!

本文由文学家马特整理,内容仅供参考,未经书面授权禁止转载!图片来源图虫创意,版权归原作者所有。

相关阅读