从零开始学java (五)接口与内部类

  接口,是描述类具有什么样的功能,而不是给出每个功能的实现。一个类可以implements多个接口...接口中可以含有 变量和方法。但是要注意,

接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误),而方法会被隐式地指定

为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、 final等修饰会报编译错误),并且接口中

所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。从这里可以隐约看出接口和抽象类的区别,接口是一种极度抽象的类型,

它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量。

  定义一个接口,名字叫animal ,假设都有吃和睡的功能。

public interface Animal {
     void eat();
     void sleep();
}

  同时定义一个Cats接口,猫科动物的特性。

public interface Cats {

    public void climb();
    public void hunt();
}

猫同时继承这两个接口,并实现方法。

public class Cat implements Animal,Cats{

    @Override
    public void eat() {
        System.out.println("吃鱼");
    }

    @Override
    public void sleep() {
        System.out.println("白天睡觉");

    }

    @Override
    public void climb() {
        System.out.println("猫会爬树");

    }

    @Override
    public void hunt() {
        System.out.println("猫会抓老鼠");

    }

}

狗是动物,但不是猫科动物。同时狗有特殊的看家本领,所以它应该具有特殊的方法!

public class Dog implements Animal{
     @Override
    public void eat() {
        System.out.println("吃狗粮");

    }
    @Override
    public void sleep() {
        System.out.println("晚上睡觉");

    }
    public void Housekeeping(){
        System.out.println("狗会看家");
    }
}

测试一下。。

public class TestInterface {

    public static void main(String[] args) {
         Animal dog = new Dog();
         dog.eat();
         dog.sleep();
         //dog.Housekeeping();这里会报错,因为接口里并没有这个方法
         Cats cat = new Cat();
         cat.climb();
         cat.hunt();
    }
}

二.内部类

  http://www.cnblogs.com/dolphin0520/p/3811445.html

上一篇:Android 性能优化(一)内存篇


下一篇:MySQL主从同步报Client requested master to start replication from position