ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

20220726 第五小组 罗大禹 学习笔记

2022-07-26 23:01:10  阅读:109  来源: 互联网

标签:大禹 20220726 abstract 接口 抽象 笔记 抽象类 方法 public


20220725 第五小组 罗大禹 学习笔记

Java 面向对象:抽象

学习重点

1.抽象类
2.接口

学习心得

今天讲的内容还是比较好理解的,就是还是有点不太熟悉。

学习内容

Java 面对对象:抽象

抽象类及接口(理解)

​ 在Java中除了类,还有抽象类和接口

抽象类(理解)

比类更高级的抽象

public abstract class Animal {//抽象类
    public abstract eat();//抽象方法
}
abstract 关键字

abstract能修饰什么

  1. 被abstract关键字修饰的类被称为抽象类,

  2. 方法

    被abstract修饰的方法被称为抽象方法, 抽象方法没有方法体(没有大括号)

    一个类如果继承了一个抽象类,就必须重写这个抽象类所有的的抽象方法

抽象类(理解)
  1. 抽象类是不能被直接实例化的,需要依靠子类采用向上转型的方式处理
  2. 抽象类必须有子类,使用extends继承,一个类只能继承一个抽象类
  3. 子类(如果不是抽象类),则必须重写抽象类中的所有抽象方法
抽象方法(理解)

抽象方法必须在抽象类中

  1. 当我们定义了一个抽象类,这个抽象类可以有哪些结构?
    属性,成员方法,构造器,抽象方法,常量

  2. 抽象类中能不能没有抽象方法
    抽象类可以没有抽象方法(如果没有抽象方法,尽量不要写抽象类)

  3. 抽象类的构造器存在的意义
    为了约定子类的构造器必须与父类要匹配

  4. 抽象方法到底约定了什么?规定了什么?定了那些规则?

​ 约定了返回值,约定了返回权限,约定了参数列

  1. 抽象方法必须是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

栈与队列的相同点:

  1. 都是线性结构
  2. 插入操作都是在表尾进行
  3. 都可以通过顺序结构和链式结构实现。

栈与队列的不同点:
队列,先进先出,栈先进后出

标签:大禹,20220726,abstract,接口,抽象,笔记,抽象类,方法,public
来源: https://www.cnblogs.com/ldydj/p/16522953.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有