【0基础学java】教学日志:javaSE-面向对象6-接口、面向接口编程、内部类
目录
本章概述:
一、为什么使用接口
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-接口、面向接口编程、内部类相关推荐
- 【0基础学java】教学日志:javaSE-面向对象6-面向对象前4章上机作业点评,主要涉及继承、封装、多态三个章节的内容
目录 一.面向对象第一章上机作业参考答案(略) 二.面向对象第二章上机作业参考答案: 三.面向对象第三章上机作业参考答案: 1.上机练习1已在第三章博客中编写,请参考: 2.上机练习2 四.面向对象第 ...
- 0基础学Java需要多久?
0基础学Java需要多久?黑马程序员零基础系统学习的Java课程课时348小时,至少要学习5-6个月的时间,不同的课程大纲课时也不一样,具体课看课程的详情:Java基础课程课时在5-20小时不等,根据 ...
- 0基础学java有多难?自学Java和参加培训学Java的难易度对比分析!
在一些知识问答平台上,我看到有很多在问"0基础学java有多难",如果你想0基础自学Java那可能会比较困难,但是如果选择报培训班进行学习,即便是0基础,学Java其实也并不难.所 ...
- 0基础学java可行吗_零基础可以学习JAVA吗?
肯定是可以学的,每一个人做每一件事都是从0基础开始的,他们并不是生下来就会Java,会编程,都是通过后天的努力说得到的技能 你只需要找对方法,找对带你的人,你就可以学好 学习Java的方式有这几种: ...
- 【0基础学java】教学日志:项目实战-坦克大战-3
本章概述:本章主要讲了 1.定义坦克方向的enum,根据按键状态确定坦克方向,根据坦克方向确定坦克位移. 2.抽象出坦克类,封装相应的属性和方法,在tankFrame中直接调用. 3.添加坦克静止的处 ...
- 【0基础学java】教学日志:javaSE--Stream API
本章概述:本章主要讲了Stream特性,Stream运行机制,Stream的创建,Stream常用API,以及Stream API在实际应用开发中的作用 目录 本章概述: 一.annotation 1 ...
- 0基础学java培训_零基础可以学习java课程么?零基础java培训需要多久?
零基础可以学习java课程么? 第一.兴趣爱好是重要,总体目标很重要 在你学习培训java以前,一定要清晰自身对java是不是确实很感兴趣,還是一时头昏脑涨.终究学习培训java不仅要把握技术性,也要 ...
- 零基础学Java语言(浙江大学) 第六周 编程题
1 单词长度(5分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这里的单词与语言无关,可以包括各种符号,比如"it's& ...
- 成都天瑞地安:零基础学Java最快捷的7个计划
0基础学Java,只要方法得当,就有机会学好Java开发.学Java就像交朋友一样,从陌生到熟悉再到死党,随着学习的深入,你会发现Java并不是想象的那么枯燥和困难,甚至有种妙不可言的乐趣. 1.透彻 ...
最新文章
- MSP430常见问题之FLASH存储类
- Java删除文件夹和文件
- 重温WCF之会话Session(九)
- Java程序员从笨鸟到菜鸟之(一)开发环境搭建,基本语法,字符串,数组
- 黑马程序员_java总结_网络编程基础
- GoldenGate安装配置
- listview 模仿用户点击事件。
- SiteMesh JSP布局框架介绍
- MATLAB小波图像融合处理
- 人工智能技术发展现状分析,阿发狗22年最新
- 【Ubantu系统制作U盘安装】
- 免费在excel密码破解--超好用
- IBM服务器 不用引导盘安装方法详解
- 计算机硬盘储存怎么增加,如何扩大存储空间?电脑扩大新添加的硬盘的方法
- magicmatch java_签名图片一键批量生成 使用Java的Webmagic爬虫实现
- 谈谈在创业公司的几点感触
- 当页面有缓存 路由传参无法更新试图
- Arduino+2.4G模块做航模遥控器
- java建站_Java建站流程 ---------- 1.Eclipse 与 Maven
- 计算机房等电位连接,机房防静电地板等电位接地方案
热门文章
- java计算机毕业设计-游戏账号交易平台-演示录像-源码+数据库+系统+lw文档+mybatis+运行部署
- Github与SmartGit使用说明与建议
- 【原创】单片机入门《八集视频真正入门单片机系列视频》
- 工业相机如何调整SDK枚举顺序或者打开顺序
- 看美剧也能学英语 看一部大片胜过在美生活十天
- java 暂停循环_在用于暂停线程时,循环Thread.Sleep()会不会对性能造成影响?...
- DNS原理、进阶、编译
- JAVA打包软件exe4j使用教程
- 饥荒联机版专用服务器搭建
- ArcEngine线分割面的实现方法