学习 day2 回想毕业季被吐槽的面试经历 2021-05-12

day2 回想毕业季被吐槽的面试经历

Java 里 接口和抽象类的区别:

  1. 抽象类 关键字 使用abstract修饰使用时,子类用extends继承!
  2. 接口 关键字 interface 子类实现接口是用 implements 关键字

abstract -> 被它修饰的类 抽象类 -> 被它修饰的方法叫抽象方法;
一个完整的抽象类里,可以有多个抽象方法。也可以没有抽象方法。
也可以包含非抽象方法,子类继承抽象父类。必须要重新父类的抽象方法。

接口 interface : 接口在Java 中定义为一个抽象类型,是一堆抽象方法的集合。反义就是说接口中的所有方法必须是抽象的。从定义上看,接口是一个集合,并不是类。 接口中的方法是是需要被 实现的类实现完成接口。

区别:

1,抽象类是类,是有Java类的所有的特征,唯独不能被实例化。当然也包扣了类的构造方法,也就是构造器。
2,接口中不能有构造器,接口中所有方法都是集合。是集合不是类,当然没有构造器方法一说。
3,抽象方法中,可以使用的权限控制关键字。可以有public、protected和default这些修饰符。抽象类的最终目的是需要被继承。是需要子类完成父类的意志。所有不能有private 关键字来修饰。
4,接口中的方法有且只有一个public关键字来修饰。

优势

抽象方法比接口方法快。接口方法慢是因为需要子去找自己实现类的方法。
Java 语言中一个子类可以实现多个接口,但是只能继承自己一个父类。(单继承多实现)

接上代码:描述抽象类的工作模式

package com.msl.minibatis.control;

// 抽象类

/**
 *被 abstract 修饰类的叫做 抽象类,抽象类中含有抽象方法和非抽象方法。
 */
public abstract class AbstractGuessGame {

    private int number;

    public void setNumber (int number) {
        this.number = number;
    }

    // 抽象方法
    protected abstract void showMessage(String message);
    public abstract int  getInput();

    // 普通方法
    public void start() {
        showMessage("请输入要字符!!");
        int guess = 0;
        do {
            guess = getInput();
            if (guess < number) {
                showMessage("输入的数字偏小!!");
            } else if (guess > number) {
                showMessage("输入的数字偏大!!!");
            } else {
                showMessage("输入正确");
            }
        } while (guess != number);
    }

}

package com.msl.minibatis.control;


import java.util.Scanner;

/**
 * 子类继承抽象父类,子类重写父类的实现抽象父类的抽象方法
 *
 *
 */
public class TextModeGame extends  AbstractGuessGame{

    private Scanner scanner;

    // new 可以输入额写字板
    public TextModeGame () {
        scanner = new Scanner(System.in);
    }

    @Override
    protected void showMessage(String message) {
        for (int i = 0; i <message.length() ; i++) System.out.print("******");
        System.out.println("\n" + message);
        for (int i = 0; i <message.length() ; i++) System.out.print("******");
    }

    @Override
    public int getInput() {
        System.out.println("\n 请输入数字*****");
        return scanner.nextInt();
    }
}

package com.msl.minibatis.control;

public  class GuessGameDemo {

    public static void main(String[] args) {
        AbstractGuessGame guessGame = new TextModeGame();
        guessGame.setNumber(50);
        guessGame.start();
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值