接口 与 抽象Interface and Abstract

接口 x 向上转换

分析题

分析每一段代码,能否通过编译

1.

Inter.java

1 2 3
public interface Inter { public void func();}

Cla.java

1 2 3
public class Cla { }

Main.java

1 2 3 4 5 6
public class Main { public void run() { Inter inter = new Cla(); inter.func(); }}
A

可以通过编译

B

编译会出错

2.

Inter.java

1 2 3
public interface Inter { public void func();}

Cla.java

1 2 3
public class Cla implements Inter { }

Main.java

1 2 3 4 5
public class Main { public void run() { Inter inter = new Cla(); }}
A

可以通过编译

B

编译会出错

3.

Inter.java

1 2 3
public interface Inter { public void func();}

Cla.java

1 2 3 4 5
public class Cla implements Inter { public void func() { ... }}

Main.java

1 2 3 4 5 6
public class Main { public void run() { Inter inter = new Cla(); inter.func(); }}
A

可以通过编译

B

编译会出错

4.

Inter.java

1 2 3
public interface Inter { public void func();}

Cla.java

1 2 3 4 5
public class Cla { public void func() { ... }}

Main.java

1 2 3 4 5 6
public class Main { public void run() { Inter inter = new Cla(); inter.func(); }}
A

可以通过编译

B

编译会出错

接口 x 类型转换

分析题

IA.java

1 2 3
public interface IA { public void func();}

CA.java

1 2 3 4 5
public class CA implements IA{ public void func() { ... }}

IB.java

1 2 3
public interface IB { public void func();}

CB.java

1 2 3 4 5
public class CB extends CA implements IB{ public void func() { ... }}

基于上面的代码,写出 所有 可以接住 Cla2 对象的变量类型

也就是,下面代码中 Xxx 可以是什么?

Main.java

1 2 3 4 5
public class Main { public void run() { Xxx some = new CB(); }}
答案
Object
IA 
CA 
IB 
CB 

抽象Abstract

分析题

分析下面的陈述句是错是对

1.

抽象类里一定有抽象方法

A

B

不对

2.

有抽象方法的类,一定是抽象类

A

B

不对

3.

一个类内,如果没有声明抽象方法,那么这个类可以被 new

A

B

不对

ZZAX 微信公众

文档一更新,立刻告诉你