java学习日记day8

写了个控制台版的简陋的酒店管理系统 写的比较原始比较差 为了求速度 很多提示和可优化的内容都没写

复习:

  1. 构造方法:与类同名,无返回值
  2. This关键词 代表本类
  3. 方法的重载 同一类中 方法名相同 参数不同:类型 ,个数 ,顺序不同 与返回值和类型名字无关
  4. 引用类型数组 步骤1.初始化数组长度 2.初始化数组元素
  5. 二维数组(引用类型数组)

学习内容

1优化了控制台板的酒店管理系统 改用了面向对象的方法

Room类

public class room {

    String[][] name = new String[5][5];

    String[][] room = new String[5][5];

}

hotel类

import java.util.Scanner;



public class hotel {

    room Room;



    hotel(){

        Room = new room();

        for (int i = 0; i < 5; i++)

            for (int j = 0; j < 5; j++) {



                Room.name[i][j]="null";

                Room.room[i][j]=(i+1)+"00"+(j+1);

            }

    }

    public void Show(String order){

        if (order.equalsIgnoreCase("show")) {



            for (int i = 0; i < 5; i++) {

                for (int j = 0; j < 5; j++) {

                    System.out.print(Room.name[i][j] + "  ");

                }

                System.out.println();

                for (int j = 0; j < 5; j++) {

                    System.out.print(Room.room[i][j] + "  ");

                }

                System.out.println();

            }

        }else System.out.println("输入错误");

    }

    public void In(String order, Scanner sc){

        if(order.equalsIgnoreCase("in")) {



            String r = sc.nextLine();

            String n = sc.nextLine();

            boolean flag = false;

            for (int i = 0; i < 5; i++)

                for (int j = 0; j < 5; j++)

                    if (Room.room[i][j].equals(r) && Room.name[i][j].equals("null")) {

                        Room.name[i][j] = n;

                        flag = true;



                    }

            if (!flag) {

                System.out.println("输错房间了亲");

            }

        }

    }

    public void Out(String order, Scanner sc){



        if(order.equalsIgnoreCase("out")){

            String r = sc.nextLine();

            boolean flag = false;

            for (int i = 0; i < 5; i++)

                for (int j = 0; j < 5; j++)

                    if(Room.room[i][j].equals(r) && Room.name[i][j].equals("null")){

                        System.out.println("不用退房");

                        flag = true;



                    }else if(Room.room[i][j].equals(r) && !Room.name[i][j].equals("null")){

                        Room.name[i][j] = "null";

                        flag = true;



                        System.out.println("退房成功了亲");

                    }

            if(!flag) {System.out.println("输错房间了亲");}

        }

    }





}

测试主方法

import java.util.Scanner;



public class classtest {

    public static void main(String[] args) {

        hotel Hotel = new hotel();



        Scanner sc = new Scanner(System.in);

        String order;

        order = sc.nextLine();

        do{

            if(order.equalsIgnoreCase("show")){

                Hotel.Show(order);

                order =  sc.nextLine();

            } else if(order.equalsIgnoreCase("in")){

                Hotel.In(order,sc);

                order =  sc.nextLine();

            }else if(order.equalsIgnoreCase("out")){

                Hotel.Out(order,sc);

                order =  sc.nextLine();

            }else {

                System.out.println("输错了亲 请重新输入");

                order =  sc.nextLine();

            }

        }while (!order.equals("0"));

        System.out.println("退出成功");

    }

}

2.二维数组的内存图

 

3.继承(extends):子类继承父类

1.语法结构: 子类extends父类

2.特征:

        a.子类继承父类,就继承父类中所有的成员变量和方法

        b.所有类都有默认继承的父类:object

        c.子类功能一定比父类更强大 可以定义自己独特的成员变量和方法

        d.子类只能有一个父类,父类可以有多个子类

3.特殊情况:子类中成员变量名与父类中的同名时

           如 name

            Dog d = new Dog()

            d.name点出来的一定是子类的

 

4.创建过程先父后子 创建子类的过程中一定会调用父类无参构造方法

Super this关键词调用的只能放在方法第一行

5.super关键词

   Super:父类对象

  1. 在子类构造方法中一定会先默认调用父类的无参构造分 默认添加super()
  2. 如果父类没有无参构造方法,要在子类中手动调用父类的有参构造
  3. 在所有父子类关系的类中,建议先添加无参构造方法,方便子类使用
  4. 通过子类对象调用方法时,先看子类中有没有重写父类中的方法 如果重写了 显示子类的方法 没有重写就显示父类的

继承出现的前提(为了解决的问题):代码的复用性

面向对象三(四)大特征:继承 封装 多态(抽象)

6方法的重写 前提:必须存在父子类关系

       子类重写父类定义的方法,方法的方法名/返回值/修饰符/参数,必须完全一致才能实现方法的重写(目前)

7.抽象方法:abstract

A.使用abstract修饰的方法,抽象方法

B . 抽象方法是没有方法体的

8.抽象类

A.使用abstract修饰的类就是抽象类

B . 一个类中可以存在多个抽象方法

C . 抽象类不能实例化

D.如果子类不重写父类中的抽象类,就不能继承父类,或者将自己也变成抽象类

E.抽象类也有构造方法

9 成员变量不可能抽象,因为都是具体的类型,具体的值

有抽象方法的类就是抽象类 true

抽象了就是有抽象方法的类 false

抽象类中可以存在抽象方法 true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值