2020.7.27面向对象总结+项目+虚拟机设置

面向对象:what when where why whom how
类与对象的关系:类是对象的抽象,对象是类的实现
类是由属性和方法构成,它的每一个对象都有对应的属性和方法
方法:
访问修饰符 返回值类型 方法名 参数列表 方法体 有返回值的要有return
方法的重载和重写:
重载:方法名相同,参数列表不同,与其他无关
同一个行为有多种表现形式,广泛定义的多态有可能包含重载(国内通常不这么认为)
目的:针对同一个行为的多种表现,对应相同方法名
类方法(static 方法)
类名.方法名() 静态变量,共享同一个内存地址
封装:
保护属性值不被随意修改,特殊的值不能被赋的时候,注释又不能解决问题的时候,可以在get里加限制
私有化属性,并提供getter,setter对外接口
继承:
代码重用、是多态的基础
extends关键字
默认的根类是Object,单根继承,tostring equls hashcode
方法的重写:
有继承关系
方法名相同,参数列表相同,返回值相同或小于父类
访问修饰符不能小于父类,异常不能严于父类
构造方法
默认的构造方法都会先走父类无参构造方法,要构建对象这个能力,理解为只有object类有,其他人都没有
用super指定的构造方法,调用指定的构造方法前,参照第一条
多态:
以父类做参数类型的
父类中的方法如果被子类重写,那么在使用父类类型调用该方法时,
则看具体的子类类型,决定调用的是那个重写后的方法
以父类做返回值类型的
如果只调用父类方法则没有问题
如果需要调用子类特有方法,则需要向下强制转型
抽象类和接口:
abstract关键字:定义抽象类和抽象方法
interface关键字:定义接口
implements关键字:实现接口
抽象类和接口的异同点:
都不能被实例化,都可以有抽象方法
接口的所有方法都默认是:public abstract类型
接口的所有属性都默认是:public static final类型
抽象类用来被继承,主要的目的是代码重用,只能继承一个类
接口用来扩展功能,可以实现多个接口
异常:
异常的分类:throwable–>error、Exception
Exception–>checked异常、运行期异常(RuntimeException)
异常的处理:
try{有可能产生异常的代码}
catch(有可能的异常类型 e){打印堆栈/打印异常信息…}
finally{最终块、往往用于关闭资源}
异常类的定义:
自定义异常类,继承已知的异常类
写出有参构造方法,并用super调用父类的有参构造

玩家:级别、当前级别时间、姓名、得分,玩游戏()
级别:字符数、得分、次数、规定时间、级别号
6个级别的常量:
游戏类:玩家,生成字符(),玩游戏()

当前时间:System.currentTimeMillis();

流程控制:
欢迎
循环(当前级别的显示次数)
如果循环正常走完,升级
打印字符串
级别编号、时间初始化为当前时间、已用时间初始化为0
输出错误
超时

Game:

package cn.kgc.kb09;

import java.util.Scanner;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/27 15:05
 * @Description:
 **/
public class Game implements LevelParams {
    //生成一串字符
    Player player=new Player("Sam");
    public String getStrings(){
        int curLvl=player.getCurLevel();
        Level lvl=LEVELS[curLvl-1];
        String str="";
        for (int i = 0; i < lvl.getCharCnt(); i++) {
            int ranNum=(int)(Math.random()*10);
            str+=ranNum;
        }
        return str;
    }
    //流程控制
    public void run(){
        Scanner sc=new Scanner(System.in);
        System.out.println("欢迎"+player.getName()+"来到puickHit峡谷!!");
        while(player.getCurLevel()<=6){
            int lvlNum=player.getCurLevel();
            Level lvl=LEVELS[lvlNum-1];

            for (int i = 1; i <= lvl.getInputNum(); i++) {
                System.out.println("当前级别为"+player.getCurLevel()+"积分为:"
                        +player.getCurScore()+"已用时间:"+player.getUsedTime()/1000);
                String out=getStrings();
                System.out.println(out);
                System.out.println("请输入对应的字符串:");
                String input=sc.next();
                long now=System.currentTimeMillis();
                player.setUsedTime(now-player.getStartTime());
                if(!input.equals(out)){
                    System.out.println("输入错误,游戏结束");
                    System.exit(-1);
                }else if(player.getUsedTime()/1000>lvl.getLimitTime()){
                    System.out.println("输入超时,游戏结束");
                    System.exit(-1);
                }
                //输入正确且未超时的情况
                player.setCurScore(player.getCurScore()+lvl.getPerScore());//加分
            }

            player.setCurLevel(player.getCurLevel()+1);
            player.setUsedTime(0);
            player.setStartTime(System.currentTimeMillis());
        }


    }
}

Level:

package cn.kgc.kb09;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/27 15:05
 * @Description:
 **/
public class Level {
    private int lvNum;//级别号
    private int charCnt;//当前级别每次输出的字符数
    private int perScore;//每次输入后的正确得分
    private long limitTime;//当前级别规定时间
    private int inputNum;//输入次数

    public Level(int lvNum, int charCnt, int perScore, long limitTime, int inputNum) {
        this.lvNum = lvNum;
        this.charCnt = charCnt;
        this.perScore = perScore;
        this.limitTime = limitTime;
        this.inputNum = inputNum;

    }

    public int getLvNum() {
        return lvNum;
    }

    public int getCharCnt() {
        return charCnt;
    }

    public int getPerScore() {
        return perScore;
    }

    public long getLimitTime() {
        return limitTime;
    }

    public int getInputNum() {
        return inputNum;
    }
}


LevelParams:

package cn.kgc.kb09;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/27 15:12
 * @Description:
 **/
public interface LevelParams {
    Level[] LEVELS={
            new Level(1,2,3,20,5),
            new Level(2,3,5,40,8),
            new Level(3,4,7,60,10),
            new Level(4,5,8,55,8),
            new Level(5,6,9,50,6),
            new Level(6,7,10,40,4),
    };



}

Player

package cn.kgc.kb09;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/27 15:05
 * @Description:
 **/
public class Player {
    private String name;
    private int curLevel=1;//当前级别编号
    private int curScore;//当前得分
    private long startTime=System.currentTimeMillis();//开始时间
    private long usedTime;//使用时间

    public Player(String name) {
        this.name = name;
    }

    void play(){
        Game game = new Game();
        game.player=this;
        game.run();
        System.out.println("恭喜"+name+",您已通关!");
    }

    public String getName() {
        return name;
    }

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

    public int getCurLevel() {
        return curLevel;
    }

    public void setCurLevel(int curLevel) {
        this.curLevel = curLevel;
    }

    public int getCurScore() {
        return curScore;
    }

    public void setCurScore(int curScore) {
        this.curScore = curScore;
    }

    public long getStartTime() {
        return startTime;
    }

    public void setStartTime(long startTime) {
        this.startTime = startTime;
    }

    public long getUsedTime() {
        return usedTime;
    }

    public void setUsedTime(long usedTime) {
        this.usedTime = usedTime;
    }


}

Test:

package cn.kgc.kb09;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/27 16:17
 * @Description:
 **/
public class Test {
    public static void main(String[] args) {
        Player p=new Player("Sam");
        p.play();
    }
}

vmware安装虚拟机Centos7:

https://blog.csdn.net/qq_33573996/article/details/107122084
在Linux环境下输入

vi /etc/sysconfig/network-scripts/ifcfg-ens33

如果输入错误 :q!退出
在这里插入图片描述按a变成insert模式,
将BOOTPROTO=dhcp改成static
ONBOOT=no改成yes
最后一行添加:
IPADDR=192.168.89.30
第三位数字可以通过win+R cmd
输入ipconfig
在这里插入图片描述
我这里就改成:IPADDR=192.168.237.30
按esc 然后输入:wq保存并退出
输入:
systemctl restart network 重启网络配置
systemctl stop firewalld 关闭防火墙
这个时候就可以,然后使用软件

MobaXterm_Portable_v12.3

链接:https://pan.baidu.com/s/1CQD23aadVD_FdfiDNGh5yA
提取码:8b7c
在这里插入图片描述输入用户名和密码:
在这里插入图片描述登陆成功!

ctrl + z
可以将一个正在前台执行的命令放到后台,并且暂停
fg
将后台中的命令调至前台继续运行

:wq 保存并退出 在末行模式同shift+zz
:q! 不保存退出

当VMware Network Adapter VMnet1显示为:
169.254.*.*   而并非  192.168.*.* 时,
可以尝试以管理员身份
(windows->windows系统->命令提示符->右键->更多->以管理员身份运行)
启动命令:
netsh winsock reset catalog
然后重启计算机。

作用:winsock是Windows网络编程接口,winsock工作在应用层,它提供与底层传输协议无关的高层数据传输编程接口 netsh winsock reset 是把它恢复到默认状态。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值