目录

本章概述:

一、为什么使用接口

1、Door.java

2、DoorBell.java

3、Lock.ja

二、接口的基本使用

1、Lock.java

2、LockDoor.java

3、TestLockDoor.java

4、DoorBell.java

三、内部类

1、Outerclass.java

2、TestOuterclass.java



本章概述:本章属于面向对象第六章接口,主要讲解了为什么使用接口,接口是什么,接口是如何在实际开发过程中使用的。

目录

本章概述:

一、为什么使用接口

1、Door.java

2、DoorBell.java

二、接口的基本使用

1、Lock.java

2、LockDoor.java

3、TestLockDoor.java

三、内部类

1、Outerclass.java

2、TestOuterclass.java


一、为什么使用接口

1、Door.java

package day01.class2.interfacedemo;/*** @Auther: Yu Panpan* @Date: 2022/2/24 - 02 - 24 - 8:13* @Description: day01_2_1.interfacedemo* @version: 1.0*/
public abstract class Door {//    public Door(){
//
//    }//开门public abstract void openDoor();//关门public abstract void closeDoor();//    public static void main(String[] args) {
//        Door door = new Door();
//    }
}

2、DoorBell.java

package day01.class2.interfacedemo;/*** @Auther: Yu Panpan* @Date: 2022/2/24 - 02 - 24 - 9:32* @Description: day01_2_1.interfacedemo* @version: 1.0*/
public interface DoorBell {//拍照存储public abstract void photo();
}

二、接口的基本使用

1、Lock.java

package day01.class2.interfacedemo;/*** @Auther: Yu Panpan* @Date: 2022/2/24 - 02 - 24 - 8:14* @Description: day01_2_1.interfacedemo* @version: 1.0*/
public interface Lock {public static final int num = 100;//    public Lock(){
//
//    }//开锁public abstract void openLock();//上锁public abstract void closeLock();}

2、LockDoor.java

package day01.class2.interfacedemo;/*** @Auther: Yu Panpan* @Date: 2022/2/24 - 02 - 24 - 8:15* @Description: day01_2_1.interfacedemo* @version: 1.0*/
public /*abstract*/ class LockDoor extends Door implements Lock,DoorBell/*,Runnable,Serializable*/ {@Overridepublic void openDoor() {System.out.println("开门");}@Overridepublic void closeDoor() {System.out.println("关门");}@Overridepublic void openLock() {System.out.println("开锁");}@Overridepublic void closeLock() {System.out.println("上锁");}@Overridepublic void photo() {System.out.println("咔嚓咔嚓... ...图片被存储了");}//    @Override
//    public void run() {
//
//    }
}

3、TestLockDoor.java

package day01.class2.interfacedemo;/*** @Auther: Yu Panpan* @Date: 2022/2/24 - 02 - 24 - 8:18* @Description: day01_2_1.interfacedemo* @version: 1.0*//*在java中,一个子类只能有一个父类,是单继承的,如果我们遇到一个类需要继承多个类的时候,就需要考虑使用接口实现。在实际项目开发过程中,接口的应用非常的广泛。用法:1、接口需要用interface定义2、如果一个类实现了一个接口,那么就必须要把接口中所有的抽象方法都实现了3、使用implements实现接口特征:1、接口中所有的方法都是public abstract修饰的,也就是默认修饰符,不管写与不写,都是public abstract,当把修饰符 public省略的时候,不能理解为使用的default修饰符,仍然是public,而且只能是public2、接口是一种特殊的抽象类,接口不可以被实例化,这个特点和抽象类是一样的,但是并不意味着不能有构造器,抽象类中可以有构造器,接口中不能有,之前我们讲过只要可以通过new关键字创建一个对象,就一定会找到一个对应的构造器被执行,但是这句话反过来就不一定了,什么意思,也就是说,有构造器不一定可以创建对象,但是如果new一个对象就一定存在一个对应的构造器3、实现类必须实现接口中的所有方法,但是如果你就想实现接口中的一部分方法,有一些未实现,那么需要把这个实现类定义为抽象类即可4、实现类可以实现多个接口5、接口中的变量都是静态变量,默认修饰符是 public static final,修饰符 public写与不写都是public,而且只能是 public6、一个接口可以继承多个接口注意:1、接口表示一种能力,体现在接口的方法上2、关心实现类有何能力,而不关心实现细节,面向接口的约定而不考虑接口的具体实现3、接口是一种约定java基础阶段高频面试题:接口和抽象类有什么区别?1、接口是一种特殊的抽象类;2、一个类继承抽象类使用extends,实现接口使用implements,并且extends要在implements之前;3、一个类只能继承一个抽象类,但是可以实现多个接口;4、抽象类和接口都不能被实例化,但是抽象类中可以有构造器,而接口中不能有;5、抽象类中可以有变量也可以有常量,可以有方法的实现,也可以有方法的定义,而接口中只能有全局静态常量,默认的修饰符是public static final,不能有变量,同时只能有方法的定义,默认修饰符是public abstract,不能有方法的实现;6、类与类之间的继承是单继承,而接口之间的继承是多继承.学习方法:听课到底听什么?怎么听?1、改变思维-->有思路-->理步骤理流程-->实现代码逻辑2、复习-->预习-->同步找一套视频-->上课的时候可以带问题来听课3、课堂笔记,预习笔记*/
public class TestLockDoor {public static void main(String[] args) {LockDoor lockDoor = new LockDoor();lockDoor.openLock();lockDoor.openDoor();lockDoor.closeDoor();lockDoor.closeLock();lockDoor.photo();//        Lock lock = new LockDoor();
//        System.out.println(lock.num);//        Lock lock = new Lock();
//        Lock.num = 200;
//        System.out.println(Lock.num);}
}

4、DoorBell.java

package day01.class2.interfacedemo;/*** @Auther: Yu Panpan* @Date: 2022/2/24 - 02 - 24 - 9:32* @Description: day01_2_1.interfacedemo* @version: 1.0*/
public interface DoorBell {//拍照存储public abstract void photo();
}

三、内部类

1、Outerclass.java

package day03.class4.innerdemo1;/*** @Auther: Yu Panpan* @Date: 2022/2/27 - 02 - 27 - 10:07* @Description: day03.class4.innerdemo1* @version: 1.0*/public class OuterClass{private String name = "张飞";private int id;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public void show(){System.out.println("这是外部类的show方法");
//        System.out.println(gender);
//        test();//创建类对象
//        InnerClass innerClass = new InnerClass();
//        System.out.println(innerClass.gender);
//        innerClass.test();}//成员内部类class InnerClass{private String gender;private String name = "赵云";//        private static String no;public void test(){System.out.println("这是内部类的test方法");
//            System.out.println(gender);
//            System.out.println(name);
//            System.out.println(id);
//            show();System.out.println(name);System.out.println(this.name);System.out.println(OuterClass.this.name);//            OuterClass outerClass = new OuterClass();
//            outerClass.show();}class InnerInnerClass{public void test1(){System.out.println("这是内部类中的内部类");}}}//主方法/入口方法
//    public static void main(String[] args) {
//        InnerClass innerClass = new OuterClass().new InnerClass();
//    }}//class HelloWorld{
//
//}

2、TestOuterclass.java

package day03.class4.innerdemo1;/*** @Auther: Yu Panpan* @Date: 2022/2/27 - 02 - 27 - 10:07* @Description: day03.class4.innerdemo1* @version: 1.0*/public class OuterClass{private String name = "张飞";private int id;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public void show(){System.out.println("这是外部类的show方法");
//        System.out.println(gender);
//        test();//创建类对象
//        InnerClass innerClass = new InnerClass();
//        System.out.println(innerClass.gender);
//        innerClass.test();}//成员内部类class InnerClass{private String gender;private String name = "赵云";//        private static String no;public void test(){System.out.println("这是内部类的test方法");
//            System.out.println(gender);
//            System.out.println(name);
//            System.out.println(id);
//            show();System.out.println(name);System.out.println(this.name);System.out.println(OuterClass.this.name);//            OuterClass outerClass = new OuterClass();
//            outerClass.show();}class InnerInnerClass{public void test1(){System.out.println("这是内部类中的内部类");}}}//主方法/入口方法
//    public static void main(String[] args) {
//        InnerClass innerClass = new OuterClass().new InnerClass();
//    }}//class HelloWorld{
//
//}

【0基础学java】教学日志:javaSE-面向对象6-接口、面向接口编程、内部类相关推荐

  1. 【0基础学java】教学日志:javaSE-面向对象6-面向对象前4章上机作业点评,主要涉及继承、封装、多态三个章节的内容

    目录 一.面向对象第一章上机作业参考答案(略) 二.面向对象第二章上机作业参考答案: 三.面向对象第三章上机作业参考答案: 1.上机练习1已在第三章博客中编写,请参考: 2.上机练习2 四.面向对象第 ...

  2. 0基础学Java需要多久?

    0基础学Java需要多久?黑马程序员零基础系统学习的Java课程课时348小时,至少要学习5-6个月的时间,不同的课程大纲课时也不一样,具体课看课程的详情:Java基础课程课时在5-20小时不等,根据 ...

  3. 0基础学java有多难?自学Java和参加培训学Java的难易度对比分析!

    在一些知识问答平台上,我看到有很多在问"0基础学java有多难",如果你想0基础自学Java那可能会比较困难,但是如果选择报培训班进行学习,即便是0基础,学Java其实也并不难.所 ...

  4. 0基础学java可行吗_零基础可以学习JAVA吗?

    肯定是可以学的,每一个人做每一件事都是从0基础开始的,他们并不是生下来就会Java,会编程,都是通过后天的努力说得到的技能 你只需要找对方法,找对带你的人,你就可以学好 学习Java的方式有这几种: ...

  5. 【0基础学java】教学日志:项目实战-坦克大战-3

    本章概述:本章主要讲了 1.定义坦克方向的enum,根据按键状态确定坦克方向,根据坦克方向确定坦克位移. 2.抽象出坦克类,封装相应的属性和方法,在tankFrame中直接调用. 3.添加坦克静止的处 ...

  6. 【0基础学java】教学日志:javaSE--Stream API

    本章概述:本章主要讲了Stream特性,Stream运行机制,Stream的创建,Stream常用API,以及Stream API在实际应用开发中的作用 目录 本章概述: 一.annotation 1 ...

  7. 0基础学java培训_零基础可以学习java课程么?零基础java培训需要多久?

    零基础可以学习java课程么? 第一.兴趣爱好是重要,总体目标很重要 在你学习培训java以前,一定要清晰自身对java是不是确实很感兴趣,還是一时头昏脑涨.终究学习培训java不仅要把握技术性,也要 ...

  8. 零基础学Java语言(浙江大学) 第六周 编程题

    1 单词长度(5分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这里的单词与语言无关,可以包括各种符号,比如"it's& ...

  9. 成都天瑞地安:零基础学Java最快捷的7个计划

    0基础学Java,只要方法得当,就有机会学好Java开发.学Java就像交朋友一样,从陌生到熟悉再到死党,随着学习的深入,你会发现Java并不是想象的那么枯燥和困难,甚至有种妙不可言的乐趣. 1.透彻 ...

最新文章

  1. MSP430常见问题之FLASH存储类
  2. Java删除文件夹和文件
  3. 重温WCF之会话Session(九)
  4. Java程序员从笨鸟到菜鸟之(一)开发环境搭建,基本语法,字符串,数组
  5. 黑马程序员_java总结_网络编程基础
  6. GoldenGate安装配置
  7. listview 模仿用户点击事件。
  8. SiteMesh JSP布局框架介绍
  9. MATLAB小波图像融合处理
  10. 人工智能技术发展现状分析,阿发狗22年最新
  11. 【Ubantu系统制作U盘安装】
  12. 免费在excel密码破解--超好用
  13. IBM服务器 不用引导盘安装方法详解
  14. 计算机硬盘储存怎么增加,如何扩大存储空间?电脑扩大新添加的硬盘的方法
  15. magicmatch java_签名图片一键批量生成 使用Java的Webmagic爬虫实现
  16. 谈谈在创业公司的几点感触
  17. 当页面有缓存 路由传参无法更新试图
  18. Arduino+2.4G模块做航模遥控器
  19. java建站_Java建站流程 ---------- 1.Eclipse 与 Maven
  20. 计算机房等电位连接,机房防静电地板等电位接地方案

热门文章

  1. java计算机毕业设计-游戏账号交易平台-演示录像-源码+数据库+系统+lw文档+mybatis+运行部署
  2. Github与SmartGit使用说明与建议
  3. 【原创】单片机入门《八集视频真正入门单片机系列视频》
  4. 工业相机如何调整SDK枚举顺序或者打开顺序
  5. 看美剧也能学英语 看一部大片胜过在美生活十天
  6. java 暂停循环_在用于暂停线程时,循环Thread.Sleep()会不会对性能造成影响?...
  7. DNS原理、进阶、编译
  8. JAVA打包软件exe4j使用教程
  9. 饥荒联机版专用服务器搭建
  10. ArcEngine线分割面的实现方法