马太效应 发表于 2017-7-27 23:10:11

Java暑期学习Day23

本帖最后由 马太效应 于 2017-7-27 23:10 编辑

今天是第23天,珍惜时光善待生活 : )

static/image/hrline/line9.png

①以下程序代码定义了Swimmer接口。
在这里Swimmer中的swim()方法没有操作,只是标示为abstract,且一定是public修饰。其实public abstract也可省略。<公开且抽象>
(在JDK8出现前,Java的接口只能定义抽象方法而不能实现它。在JDK8之后,接口可以有条件地去实现其抽象方法。)
public interface Swimmer {
      public abstract void swim();

}


②以下程序代码使用implements关键字来执行接口,再度将重写的方法定义为abstract。
(当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。)
public abstract class Fish implements Swimmer {
      protected String name;

      public Fish(String name) {
                this.name = name;
      }

      public String getName() {
                return name;
      }

      @Override
      public abstract void swim();

}


③接口与类的区别
1.接口不能实例化      <instantiate 例示>
2.接口没有构造方法   <Interfaces cannot have constructors>
3.接口中所有的方法必须是抽象方法。
         <only public, abstract, default, static and strictfp are permitted
                                                                            strictfp严格 精准>
4.接口不是被类继承了,而是要被类实现。
          <一个类只能继承一个抽象类,而一个类却可以实现多个接口。>
5.接口支持多重继承。
         <在Java中,接口可以继承另一个接口,也就是继承父接口的行为,再在子接口中额外定义行为。>


public class Submarine implements Swimmer{
      protected String name;
   public static void main(String[] args) {
    Submarine s=new Submarine("-小能手-");
    s.swim();
}
      public Submarine(String name) {
                this.name = name;
      }

      public String getName() {
                return name;
                }
      @Override
      public void swim() {
                // TODO Auto-generated method stub
                System.out.printf ("潜水艇%s潜行%n",name);
      
      }
}

结果是——潜水艇-小能手-潜行

④解决需求变化
如果增加新的需求,原有的程序无需修改,只需针对新需求撰写程序,那就是有弹性、具有可维护性的程序。

public interface Flyer {

        public abstract void fly();

}
还有会游又会飞的<。)#)))≦
<div>public class FlyingFish extends Fish implements Flyer {

        public FlyingFish(String name) {
                super(name);
                // TODO Auto-generated constructor stub
        }

        @Override
        public void fly() {
                // TODO Auto-generated method stub</div><div>System.out.println("我是一只会飞的<。)#)))≦");

}

        @Override
        public void swim() {
                // TODO Auto-generated method stub
System.out.println("我是一只爱水的<。)#)))≦");
        }

}
</div>
在Java中,类可以同时继承某个类,并操作某些接口。
public class Ocean {
        public static void main(String[] args) {

                doSwim(new FlyingFish("哆啦阿盟"));

        }

        static void doSwim(Swimmer swimmer) {
                swimmer.swim();

        }

}

⑤接口语法细节


public interface Action {
       
        public static final int STOP=0;
        public static final int RIGHT=1;
        public static final int LEFT=2;
        public static final int UP=3;
        public static final int DOWN=4;
       

}
以上接口中的这类常数,称为枚举常数。
(其中public static final 可省略)

提示:java中小数默认是double类型,所以如果写float必须在小数后加“f”,不然会报错。







页: [1]
查看完整版本: Java暑期学习Day23