20220726 第五小组 罗大禹 学习笔记
2022/7/26 23:23:37
本文主要是介绍20220726 第五小组 罗大禹 学习笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
20220725 第五小组 罗大禹 学习笔记
Java 面向对象:抽象
学习重点
1.抽象类
2.接口
学习心得
今天讲的内容还是比较好理解的,就是还是有点不太熟悉。
学习内容
Java 面对对象:抽象
抽象类及接口(理解)
在Java中除了类,还有抽象类和接口
抽象类(理解)
比类更高级的抽象
public abstract class Animal {//抽象类 public abstract eat();//抽象方法 }
abstract 关键字
abstract能修饰什么
-
类
被abstract关键字修饰的类被称为抽象类,
-
方法
被abstract修饰的方法被称为抽象方法, 抽象方法没有方法体(没有大括号)
一个类如果继承了一个抽象类,就必须重写这个抽象类所有的的抽象方法
抽象类(理解)
- 抽象类是不能被直接实例化的,需要依靠子类采用向上转型的方式处理
- 抽象类必须有子类,使用extends继承,一个类只能继承一个抽象类
- 子类(如果不是抽象类),则必须重写抽象类中的所有抽象方法
抽象方法(理解)
抽象方法必须在抽象类中
-
当我们定义了一个抽象类,这个抽象类可以有哪些结构?
属性,成员方法,构造器,抽象方法,常量 -
抽象类中能不能没有抽象方法
抽象类可以没有抽象方法(如果没有抽象方法,尽量不要写抽象类) -
抽象类的构造器存在的意义
为了约定子类的构造器必须与父类要匹配 -
抽象方法到底约定了什么?规定了什么?定了那些规则?
约定了返回值,约定了返回权限,约定了参数列
- 抽象方法必须是public或者protected(因为如果是private,不能被子类重写),默认情况是可以的
注意:
抽象方法不能用private修饰,开发中,抽象方法基本上都是public
抽象方法不能用final修饰,用final修饰的方法是不可以被重写的
抽象类不能用final修饰,用final修饰的类是不允许被继承的。
约定大于配置,配置大于代码
接口(理解)
比抽象类更高级的抽象
接口存在的意义:
约定(比抽象类更加严格)
interface关键字
使用interface关键字声明接口:
public interface Ch02{ }
接口中能有什么?
JDK7之前:接口中只能定义抽象方法,不能有属性,不能有方法,可以有静态常量
JDK8及以后:接口中只能定义抽象方法,不能有属性,可以有默认方法和静态方法以及静态常量
JDK7——JDK8:多了默认方法和静态方法
//接口 public interface Biology { // 静态常量 public static final String NAME = "张三"; // 抽象方法 public abstract void breath(); // 抽象方法 public abstract void eat(); // 静态方法 public static void show(){ }
注意:
接口中的抽象方法默认是public abstract,我们推荐省略
接口中的常量默认是public static final,我们推荐省略
接口中的结构必须是public,默认均为public
接口中结构的特点:
public interface Ch01{} public interface Ch02{} public interface Ch03{} public class Ch04 implements Ch01,Ch02,Ch03{}
接口可以被实现,实现接口的类被称为实现类
接口可通过implements关键字来实现!
实现接口是可以多实现的,中间用 " , " 隔开
如果一个类实现了一个接口,它就需要重写接口中所有的抽象方法
注意:
实现接口是可以多实现的,而继承只能单继承
开发中,如果一件事情可以通过继承和实现接口来解决问题,使用接口解决。
多态的前提条件
1、继承,实现
2、重写方法
3、父类——子类,接口---实现类
匿名实现类(理解)
举例说明
package com.jsoft.afternoon; /** * 匿名实现类 * */ public class Ch01 { public static void main(String[] args) { //Abstr01为抽象类 Abstr01 a01 = new Abstr01() { @Override public void show() { System.out.println("重写过后的show方法..."); } }; a01.show(); //Inter01为接口 Inter01 inter01 = new Inter01() { @Override public void eat() { System.out.println("重写过后的eat方法..."); } }; inter01.eat(); } }
面试题:
1、继承抽象类和实现接口的异同
2、抽象类和接口的区别
3、 java中只有单继承对不对?
栈和队列:(理解)
栈和队列是两种操作受限的线性表。
这种受限表现在:
栈的插入和删除只允许在表的尾端进行(在栈中叫做“栈顶”),满足FILO First In Last Out;
队列只允许在表尾插入元素,在表头删除元素,FIFO First In First Out
栈与队列的相同点:
- 都是线性结构
- 插入操作都是在表尾进行
- 都可以通过顺序结构和链式结构实现。
栈与队列的不同点:
队列,先进先出,栈先进后出
这篇关于20220726 第五小组 罗大禹 学习笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器