多态总结,接口知识==0914

来源:互联网 发布:微信公众号源码下载 编辑:程序博客网 时间:2024/04/26 11:20

                                            学习报告

1、instanceof作用是什么?

   例如: a instanceof b

解答:判断a变量指向的对象是否匹配制定的类型,匹配则返回值为真,否则为假;

如果a变量是null,那么返回值为假。

2、什么是抽象方法?什么是抽象类?

解答:如果一个类中的方法,只要方法定义,没有方法具体实现,那么该方法就称为抽象方法。

      而拥有抽象方法的类叫做抽象类。

3、接口如何定义?接口如何实现?实现一个接口必须要做什么?

解答:接口是类的一种行为的抽象。接口可以看做抽象类的特类。

抽象类中可以有抽象方法,也可以有具体方法;但是接口中只能有抽象方法。

定义接口使用interface,实现接口使用implements.

4、接口中的方法修饰符是什么?接口中的变量修饰符是什么?

解答:接口中的抽象方法修饰符为public static,即使在缺省的条件下,都会默认为

它们为修饰符{公有的静态的抽象方法}

      变量的修饰符是:public static,[公有静态常量]

5、接口和抽象类的区别是什么?

解答:1.接口和抽象类都不能直接实例化。

      2.抽象类中可以抽象方法,也可以有实例方法,但是接口中只能有抽象方法。

      3.抽象类中定义的变量是普通属性,但是接口中定义的变量是公共的静态的常量。

      4.一个类只能继承一个抽象类,但是可以实现多个接口。

 

6、什么时候使用继承?什么时候使用接口?

解答:接口可以继承接口,同时可以多继承接口。一个类实现一个接口,不但要实现该接口中

定义的抽象方法,而且要实现该接口父接口中定义的抽象方法。除此之外就使用继承来完成。

7.多态的总结:

l  使用父类类型的引用指向子类的对象。

l  该引用只能调用父类中定义的方法,不能调用子类中独有的方法。

l  如果子类中重写了父类中的一个方法,那么在调用该方法时,将会调用子类中的这个方法。

l  在多态中,子类可以调用父类中所有的方法。

l  多态主要体现为重载与重写,相同的行为不同的实现方式。

l  多态主要应用为多态参数和多态集合。

l  如果一个方法有父类作为参数类型,就意味着可以给该方法传递任何一个字类对象。

如果一个类中的方法,只要方法定义,没有方法具体实现,那么该方法就称为抽象方法,而拥有抽象方法的类叫做抽象类,用关键字abstract定义。抽象类不能直接实例化,如果要实例化抽象类,那么抽象类变量需要指向子类对象。

抽象类中可以定义抽象方法,也可以定义具体的方法。如果一个类继承抽象类,那么必须重写抽象类中定义的所有抽象方法。

抽象方法定义的意义在于,使用父类变量指向子类对象时,可以对抽象方法进行调用。

JAVA代码查错

a、

abstractclass Name {

  private String name;

  public abstract boolean isStupidName(Stringname) {}

}

解答:抽象方法是只定义,无实现的方法,在句末直接用分号结束。

b、  abstract class Something {

  private abstract String doSomething ();

}

解答:Something的类缺省时为public ,下面的方法只能使用protected,public,缺省来修饰,

不能使用其他修饰符修饰抽象方法(private).

c、public class Father{

    public Father(int x){

   }

}

classChild extends Father{

    public Child(){

   }

}

解答:子类中的方法必须使用super(参数),调用父类的构造方法(这时super可以不写)及重载方法

(必须要写),在子类对象产生前就产生父类对象。

d、public class Father{

    public void test(){

    }

}

classChild extends Father{

    public void speak(){

    }

}

classTest{

   public static void main(String[] args){

   Father f = new Child();

   f.speak();

   }

}

解答:用父类对象变量接收子类对象时,父类变量名.(),括号内的方法和属性只能是父类对象的,无法访问子类

      对象的方法与属性。

e、interface  A{

  int x = 0;

}

classB{

  int x =1;

}

classC extends B implements A {

  public void pX(){

     System.out.println(x);

  }

  public static void main(String[] args) {

     new C().pX();

  }

}

解答:pX方法中的x没有声明和初始化,不知道是指哪个x。

说出运行结果

1、abstract class Base{

    abstract public void myfunc();

publicvoid another(){

    System.out.println("Anothermethod");

 }

}

publicclass Abs extends Base{

    public static void main(String argv[]){

    Base a = new Abs();

    a. another ();

}

publicvoid myfunc(){

    System.out.println("My Func");

}

publicvoid another (){

    super.another();

    myfunc();

}

}

解答:运行结果是:Anothermethod,My Func

2、interface MyIn{}

publicclass MyClass implements MyIn{

   static String str;

   public MyClass(){

   }

   public static void main(String[] args) {

      MyClass myClass = new MyClass();

      System.out.print(myClass instanceof MyIn);

      System.out.println(str instanceof String);

   }

}

解答:运行结果是:true,false.

代码实现以下文字描述的系统。

1、手机有打电话、听歌、照像、摄像的功能。应该如何设计?(继承类,实现多个接口)

2、超人、鸟、飞机都会飞,现在空管局的人要控制这些会飞的东西。我们该怎么设计。

 

3、在一个游戏中,有盗贼,猎人,医生,农民,士兵几类人,这些人都有名称、等级,还可以自己介绍自己;

  其中,

      盗贼可以偷盗。

      猎人可以打猎。

      农民可以采矿。 

      盗贼、猎人和农民可以攻击。

      农民、医生可以治疗。

      士兵可以抵抗盗贼、猎人和农民等的攻击。

       还有一个玩家可以控制这些角色。

     设计这个系统。

0 0