鱼C论坛

 找回密码
 立即注册
查看: 2588|回复: 0

[学习笔记] Java暑期学习Day23

[复制链接]
发表于 2017-7-27 23:10:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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


                               
登录/注册后可看大图


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

  3. }
复制代码


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

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

  6.         public String getName() {
  7.                 return name;
  8.         }

  9.         @Override
  10.         public abstract void swim();

  11. }
复制代码


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


  1. public class Submarine implements Swimmer{
  2.         protected String name;
  3.    public static void main(String[] args) {
  4.     Submarine s=new Submarine("-小能手-");
  5.     s.swim();
  6. }
  7.         public Submarine(String name) {
  8.                 this.name = name;
  9.         }

  10.         public String getName() {
  11.                 return name;
  12.                 }
  13.         @Override
  14.         public void swim() {
  15.                 // TODO Auto-generated method stub
  16.                 System.out.printf ("潜水艇%s潜行%n",name);
  17.         
  18.         }
  19. }
复制代码

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

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

  1. public interface Flyer {

  2.         public abstract void fly();

  3. }
复制代码
还有会游又会飞的<。)#)))≦
  1. <div>public class FlyingFish extends Fish implements Flyer {

  2.         public FlyingFish(String name) {
  3.                 super(name);
  4.                 // TODO Auto-generated constructor stub
  5.         }

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

  9. }

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

  15. }
  16. </div>
复制代码

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

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

  4.         }

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

  7.         }

  8. }
复制代码

⑤接口语法细节


  1. public interface Action {
  2.        
  3.         public static final int STOP=0;
  4.         public static final int RIGHT=1;
  5.         public static final int LEFT=2;
  6.         public static final int UP=3;
  7.         public static final int DOWN=4;
  8.        

  9. }
复制代码
以上接口中的这类常数,称为枚举常数
(其中public static final 可省略)

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







评分

参与人数 1鱼币 +4 收起 理由
小甲鱼 + 4

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 06:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表