dijiuzu

 

20220726 第一组 于芮 面向对象之抽象类与接口 (第十七天)

 
小白成长记——第十七天
 
   经过了将近一周的学习,面向对象的四个特点已经学习到了最后一个——抽象,外加一个接口,这两个知识点都是对之前知识更加深入学习,接口是更高级的抽象,也更难理解,也是代码变得更加简单化,维护起来相比较来说简单了许多,来看看今天的知识点吧!

抽象abstract(没有大括号,没有方法体,有返回值,加了关键字)
约定:自定义规则
抽象方法必须在一个抽象类里,抽象类里也可以没有抽象方法
抽象类不能创建对象
为了约定子类的构造器和父类相匹配
abstract可以修饰类,方法
抽象方法不能用private修饰,不能用final修饰,final修饰的方法不允许被重写
抽象类不能用final修饰,final修饰的类不允许被继承
抽象方法必须是public或者是protected(private不能被子类继承,子类便无法实现该方法,默认情况就是public)
抽象类不能被直接实例化,需要依靠子类采用向上转型的方式处理
抽象类必须有一个子类,一个类只能继承一个抽象类
子类(如果不是抽象类),则必须重写抽象类中的所有抽象方法
(如果子类没有实现父类的抽象方法,必须将子类也定义成abstract)

约定大于配置,配置大于编码
抽象类中的结构
1.属性
2.成员方法
3.构造器
4.抽象方法
5.常量


接口(比抽象类更高级的抽象)
声明:使用interface关键字
接口中结构的特点(结构必须是public)
1.接口中的抽象方法默认是public abstract,推荐省略
2.接口中的常量默认是public static final,推荐省略

接口可以被实现,实现类
如果一个类实现了一个接口,需要重写接口中所有的方法
一个类可以实现多接口,继承只能继承一个

接口存在的意义:约定

java中存在多继承,在接口之间,在类之间只有单继承

栈和队列(两种操作受限的线性表)
相同点
1.都是线性结构
2.插入操作,都是在表尾进行

   经过这段时间的学习,我深感到作为一名程序猿远没有想象的那么简单,我们就像一个接口,哪里需要去哪里,我们只是代码的搬运工,通过自己的逻辑让一堆毫无感情的英文字母变得活灵活现,可以实现诸多功能,今天还接触了一些数据结构中的知识,来看看今天的实例练习吧!

 1 package com.jsoft.afternoon.test03;
 2 
 3 import com.jsoft.afternoon.Queue;
 4 import com.jsoft.morning.B;
 5 
 6 import java.util.Scanner;
 7 
 8 /**
 9  * 银行取票机
10  * 队列
11  *
12  */
13 public class BankTicketMachine {
14 
15     // 需要一个队列结构
16     private Queue queue = new Queue();
17 
18     // 银行的小票起始号
19     private int startNumber = 100;
20 
21     private Scanner scanner = new Scanner(System.in);
22 
23     // 取票
24     public Integer getTicket(){
25         if(queue.empty()){
26             System.out.println("号码已经全部领取,需要继续释放号码!");
27             System.out.println("请输入释放号码的个数:");
28             Integer number = scanner.nextInt();
29             pushTicket(number);
30         }
31         return queue.poll();
32     }
33 
34     // 排队
35     public void pushTicket(int ticketNumber){
36         for (int i = 0;i < ticketNumber;i++){
37             startNumber += 1;
38             queue.add(startNumber);
39         }
40     }
41     public void run() {
42         while(true) {
43             System.out.println("请输入您的名字:");
44             String name = scanner.next();
45             Integer ticket = getTicket();
46             System.out.println("尊敬的【"+ name+ "】,您的号码是:" + ticket + "。");
47         }
48     }
49 
50     public static void main(String[] args) {
51 //        BankTicketMachine bankTicketMachine = new BankTicketMachine();
52         new BankTicketMachine().run();
53     }
54 }

posted on 2022-07-26 19:15  于芮  阅读(16)  评论(0编辑  收藏  举报

导航