ICode9

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

2022-07-26 第二组 刘禹彤 学习笔记

2022-07-26 19:04:17  阅读:107  来源: 互联网

标签:26 07 子类 接口 抽象 刘禹彤 抽象类 方法 public


打卡第16天

今天继续学习面向对象

 

###学习内容:

1.面向对象特征:抽象

  • Java中除了类,还有抽象类和接口
  • 抽象方法,没有大括号----没有方法体
  • 抽象方法存在的意义是什么?

根本意义:约定

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

1.约定了返回值,访问权限,参数列表,需要在重写的时候去定义方法体

2.约定大于配置,配置大于编码

  • 抽象方法必须在一个抽象类里

1.当我们定义了一个抽象类这个抽象类中可以有哪些结构

属性,成员方法,构造器,抽象方法,常量

2.抽象类中可以没有抽象方法

3.抽象类是不能被实例化的----抽象类不能创建对象

4.抽象类的构造器存在的意义:为了约定子类的构造器必须和父类相匹配

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

  • abstract能修饰什么?

类,方法

  • 抽象方法能不能用private修饰:不能,开发中,抽象方法基本上都是public

抽象方法能不能用final修饰?不能,用final修饰的方法不允许重写,抽象方法必须让子类重写d

抽象类能不能用final修饰?不能,用final修饰的类不能被继承,抽象方类必须让子类继承

总结:1.抽象方法必须是public或者protected(因为如果是private,不能被子类继承,子类便无法实现该方法

默认情况是可以的(默认情况其实就是public

2.抽象类不能被直接实例化,需要依靠子类采用向上转型方式处理

3.抽象类必须有子类,使用extends继承,一个类只能继承一个抽象类

4.子类(如果不是抽象类),则必须重写抽象类中的所有抽象方法

如果子类没有实现父类的抽象方法,必须将子类也定义成abstract

2.接口

  • 比抽象类更高级的抽象, 抽象类也是比类更高级的抽象
  • 声明:使用interface关键字,public interface Ch02

JDK1.7之前)接口中只能定义抽象方法,不能有属性,不能有方法

(静态常量)

JDK8及以后)接口中只能定义抽象方法,不能有属性,可以有默认方法和静态方法

静态常量

(JDK7---JDK8):默认方法,静态方法

  • 接口中结构的特点:接口中的抽象方法默认是public abstract,推荐省略

接口中的常量默认是public static final,推荐省略

  • 接口中的结构必须是public
  • 接口可以被实现,实现类

比如说A类implements 接口,那我们就说A是这个接口的实现类

如果一个类实现了一个接口,他就需要重写接口中的所有抽象方法

实现接口是可以多实现的,继承只能单继承

开发中,如果一件事情可以通过继承和实现接口来解决问题,接口解决

面试题: 1.继承抽象类和实现接口的异同 同:都需要重写所有的抽象方法 异:实现接口是可以多实现的,继承只能单继承

2.在java中是否只有单继承? 不是 在java中是存在多继承的,发生在接口之间 java类与类之间只有单继承

  • 接口存在的意义:约定

面向接口编程

面向切面编程

面向对象编程

 

3.栈和队列

栈和队列是两种操作受限的线性表

这种受限表现在:

栈的插入和删除只允许在表的尾端进行(在栈中叫做”栈顶“,满足FILO

First In Last Out

队列只允许在表尾插入元素,在表头删除元素:FIFO First In First Out

  • 栈和队列的相同点:

1.都是线性结构

2.插入操作都是在表尾进行

3.都可以通过顺序结构和链式结构实现

  • 栈和队列的不同点:

1.队列:先进先出 栈:先进后出

###学习心得:

今天学习了面向对象最后一个特征:抽象,还学习了接口,栈,队列,上课基本可以跟上,不过做案例有点吃力

###掌握程度:一般

###练习:

public abstract class Animal {
    private String name;
    private  Integer age;

    public Animal() {
    }

    public Animal(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
     //抽象方法,没有大括号----没有方法体
    //抽象方法存在的意义是什么?
    //根本意义:约定
    //抽象方法到底约定了什么,规定了什么,定了那些规则?
        //约定了返回值,访问权限,参数列表,需要在重写的时候去定义方法体
    //约定大于配置,配置大于编码
    public abstract void eat();
    public abstract void show();
}
package a;

public abstract class Animal_Son extends Animal{

}
package a;

public class Person extends Animal{
    public void eat(){
        System.out.println("人在吃饭。。");
    }
    public void drank(){
        System.out.println("人在喝水");
    }

    @Override
    public void show() {
        System.out.println("haha");
    }
}
public class Ch01 {
    public static void main(String[] args) {
//        Animal animal = new Animal();不行
        Animal animal = new Person();
    }

}

 

###运行结果:

 

 

标签:26,07,子类,接口,抽象,刘禹彤,抽象类,方法,public
来源: https://www.cnblogs.com/lyt0612/p/16522180.html

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

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

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

ICode9版权所有