抽象类 接口 多态

.抽象类和接口的相同和不同

       相同:方法中无实体

       不同:抽象类是一个类中的所有对象的共同的行为(通用 共性的功能),而接口是一个类中所有对象中 的特殊的行为。(特殊 个别的功能)

二:抽象类:抽象类是类与类之间,而类是对象与对象之间。

  其实抽象类跟普通类很相似,只是多了个抽象方法。故抽象类中有具体方法和抽象方法。

1.格式

       abstract class 类名{

              abstract  void  方法名();

       }

2.抽象类中的变量不能是abstract,因为abstract不能与final共同存在。

    可以有static private protect ,final,transient,volatile类型

扫描二维码关注公众号,回复: 12470122 查看本文章

    例如:

      abstract classC{

       private int a;

       static int a1;

       public int a2;

       final int a3=100;

       transient int a4;

       volatile int a5;

     }

3.调用:可用多态方式调用,而抽象方法有两种实现方式:

    &使用子类去继承它的方法,,实现它。

    &使用子类的子类去实现它。

4.抽象类为什么不能创建对象?

    答:因为抽象类中有抽象方法,没有实体。当创建一个对象事,要能够去实现它的方法,而抽象方法不能实现,故抽象类不能创建对象

三接口

1.接口一定是抽像类,但抽象类不一定是接口,也就是说接口是纯正的抽象类

2.格式:接口类名通常以I开头。

interface I类名{

    (abstract可写可不写,因为接口是抽象类,故内部存在。尽量不写)void 方法名; //抽象方法

}

3.接口的成员属性只能是常量,可以有public static final 类型

例如:interfaceIA{

       static int a1=100;

       public int a2=100;

       final int a3=100;

       public voidf1();

     }

多态

举个例子吧!

package 书籍练习;

 

public classa1 {

  private static final Animal Dog =null;

 

  public static void main(String[] args) {

     Animala=newDog();

     //虽然它调用时用的是Dog,但当a的类型是Animal,故只可以用Animal中的所有方法

     a.showInfo();

     //若想使用dog中的独有的方法,可以强转

     Doga1=(Dog)a;

     a1.bit();

     Dogd1=null;

     Catd2=null;

     //也可以用这个方法,instanceof是测试左边的对象是否是属于右边的类

     if(ainstanceof Dog){

       d1=(Dog)a;

     }

    

  }

}

abstract classAnimal{

  //动物需要吃东西eat()

  public abstract void eat();

  //动物需要发出叫声cry()

  public abstract void cry();

 

  public void showInfo(){

     System.out.println("这是一个动物");

  }

}

 

class Cat extendsAnimal{

  public void eat(){}

  //动物需要发出叫声cry()

  public void cry(){}

}

四注意:

继承 抽象 接口 ,权限都是越变力越大的。

猜你喜欢

转载自blog.csdn.net/qq_39156616/article/details/75270546