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


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. 都可以通过顺序结构和链式结构实现。

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

原创文章,作者:wdmbts,如若转载,请注明出处:https://blog.ytso.com/277196.html

(0)
上一篇 2022年7月26日
下一篇 2022年7月26日

相关推荐

发表回复

登录后才能评论