接口和多态的使用

2018-11-03  本文已影响0人  卓昂芭比

一.接口的使用

接口(interface):用于处理继承单一的局限性;接口中的所有方法都是抽象方法;接口与了类的关系是实现(implements).

格式:interface接口名{

public static final 变量名=1;//必须初始化且不可改变。

* public abstract void 方法名();

* //接口内的方法都是抽象方法,无方法体{},不能实例化,若想实例化必须创建子类去实现。

}

接口的成员特点:只能是抽象方法和常量;接口不能创建对象(实例化);

关系:类与类:继承(单一继承,多层继承)

 类与接口:实现,多实现

接口与接口:继承,多继承

interface App {//接口

public static final int i=1;

    public abstract void app();

}

interface Bpp extends App{

public abstract void bpp();

}

class TestApp implements Bpp{//接口的实现

public  void app(){

System.out.println("实现App接口"+i);

}

public  void bpp(){

System.out.println("实现Bpp接口"+i);

}

}

public class TestAp{

public static void main(String[] args) {//测试类

TestApp t=new TestApp();

t.app();//实现App接口1

t.bpp();//实现Bpp接口1

}

}

2.多态的使用

定义:父类的引用变量指向子类对象

格式:父类名  变量=new 子类名();

成员变量:父类的成员变量在子类中被重写时,调用成员变量时调用的是子类重写的成员变量

                  若是子类中特有成员变量,变量名.成员变量;出错了;      必须强制转换为子类才能被调用变量名   ((子类) 变量名).成员变量;

成员方法:父类的成员方法在子类中被重写时,调用成员变量时调用的是子类重写的成员方法

                 若调用子类中特有成员方法,变量名.成员方法();出错了;      必须强制转换为子类才能被调用成员方法   ((子类) 父类的引用).成员方法();

特点:成员变量:编译时看左边,运行时也看左边。(编译和运行时都看左边(即看父类成员))

           成员方法:编译时看左边(父类成员),运行时看右边(子类成员)

           静态方法:编译时看左边,运行时也看左边。

总结:编译时都看左边,运行时成员方法看右边,其他(成员方法和静态方法)都看左边。

缺点:     1.无法直接访问子类特特有成员

 优点:    1.可以提高可维护性

                 2.提高代码的扩展性

class Animai {//父类

Stringname;

void eat() {

System.out.println("动物吃饭");

}

}

class Dog extends Animai{//子类

void eat() {

System.out.println("狗吃饭");//若在子类中重写了父类方法,调用父类方法是调用的是被子类重写的方法

}

void slepp() {()

System.out.println("狗睡觉");

}

}

public class AnimalTest {

//多态:1.必须要有继承或者实现类的关系

            2. 方法的重写

            3.父类的引用指向子类的对象

    public static void main(String[] args) {

Animai a =new Dog();

a.eat();//向上转型自动      动物吃饭

        ((Dog) a).slepp();//向下转型强制   狗吃饭

    }

}

上一篇 下一篇

猜你喜欢

热点阅读