赞
踩
interface A{}
class B implements A {
public String func() {
return "func";
}
}
class Demo {
public static void main(String[] args) {
A a=new B();
System.out.println(a.func());
}
}
class Fu {
boolean show(char a){
System.out.println(a);
return true;
}
}
class Demo extends Fu {
public static void main(String[] args) {
int i=0;
Fu f=new Demo();
Demo d=new Demo();
for(f.show('A'); f.show('B')&&(i<2);f.show('C')) {
i++;
d.show('D');
}
}
boolean show(char a) {
System.out.println(a);
return false;
}
}
interface A{}
class B implements A {
public String test()
{
return "yes";
}
}
class Demo {
static A get() {
return new B();
}
public static void main(String[] args) {
A a=get();
System.out.println(a.test());
}
}
答案:
分析:test()是B特有方法,所以要进行强制转换 B b=(B) a;通过b.test()来输出为空。
class Super {
int i=0;
public Super(String a) {
System.out.println("A");
i=1;
}
public Super() {
System.out.println("B");
i+=2;
}
}
class Demo extends Super {
public Demo(String a) {
System.out.println("C");
i=5;
}
public static void main(String[] args) {
int i=4;
Super d = new Demo("A");
System.out.println(d.i);
}
}
答案:
B
C
5
5
分析:系统默认了一个super(),会先执行父类构造函数,打印B C,然后调用调用Demo的构造器打印C 和 5,最后再调用对象的i值5。
class Fu {
int num=4;
void show() {
System.out.println("showFu");
}
}
class Zi extends Fu {
int num=5;
void show() {
System.out.println("showZi");
}
}
class T {
public static void main(String[] args) {
Fu f=new Zi();
Zi z=new Zi();
System.out.println(f.num);
System.out.println(z.num);
f.show();
z.show();
}
}
答案:
4
5
showzi
showzi
分析:多态的特性编译的时候能不能访问看父类,运行时看父类所以打印了4,第二个是本来的引用变量所以打印5;f.show()、z.show()因为父类中有这个方法但是在子类中被重写了。
interface A {
void show();
}
interface B {
void add(int a,int b);
}
class C implements A,B {
private int a,b;
public void add(int a,int b){
this.a =a;
this.b = b;
}
public void show() {
System.out.println(a+b);
}
}
class D {
public static void main(String[] args) {
C c=new C();
c.add(4,2);
c.show();
}
}
答案:
6
分析:c.add(4,2)将值传入了c指向的对象,c.show()将两个值加起来打印出来了。
class Super {
int i=0;
public Super(String s) {
i=1;
}
}
class Demo extends Super{
public Demo(String s){
i=2;
}
public static void main(String[] args){
Demo d=new Demo("yes");
System.out.println(d.i);
}
}
答案:
2
分析:系统加了一个默认的super()构造器,然后在调用了Demo(String s)构造器将i的值更改为2。
class Super{
public int get()
{return 4;}
}
class Demo15 extends Super{
public long get(){return 5;}
public static void main(String[] args){
Super s=new Demo15();
System.out.println(s.get());
}
}
答案:
分析:返回类型不一样不能完成覆盖,会报错。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。