java 入门第二季总结之基础知识点拓扑图

330 查看

写在前面:

前两天总结了java第一季的知识点拓扑图,感觉自己学完第一季后对java基础知识有了一个清晰的认识,知识路径已经可以内化于心,外化于代码了。
现在,第二弹已经来了,第二季也已经学完了,现在对自己掌握的知识做一个总结,同时检验自己对第二季知识的理解是否能够合格,希望大家多多指正。

按照惯例:先上一段代码

package com.xjeport;

/**
 * Created by Administrator on 2016-7-19.
 * purp-用途
 * num-最大载重or载人
 * price-单价
 * days-天数
 * carNum-车数
 */
public class Car {
    String name;
    String purp;
    int num;
    double price;

    double days;
    int carNum;

    public Car(String name,int num,double price){
        this.name=name;
        this.num=num;
        this.price=price;
    }
}
java第二季知识点拓扑图:

图片描述
上图描述的是知识点大纲,一共就这么多。首先要认识类和对象,然后要掌握类的三大特性:封装,继承,多态。

第一章:类&&对象

图片描述
这一章相对来说可能对于初次接触的人比较难理解,但是课程里讲的很清楚,只要都来几次都能掌握。
还有一个静态的问题比较难记住,但是只要在实际项目中多运用,也很好理解。要记住的是静态方法不能直接调用非静态变量和非静态方法;

第二章:封装

图片描述
在概念上只要记住问啥使用封装即可,因为这样才能知道什么时候使用封装。
牢记访问修饰符的访问范围。
内部类的东西太多可能不好记,关于成员内部类和静态内部类访问外部类的方式其实和之前的静态方法访问属性的原理差不多,如果内部类非静态,所以他可以随便访问外部类,如果内部类是静态,可以先实例化对象然后访问;
方法内部类依然遵循方法的作用域限制;

第三章:继承

图片描述
相对封装来说,我觉得继承比较好理解一些;

第四章:多态

图片描述
关于多态,无非是父类实例化子类对象,以及之后调用的方法是优先子类中重写的方法。再有抽象类,即父类规定子类必须包含哪些方法。再加一个借口,即特殊的抽象类,包含的都是常量和抽象方法,并且可以多继承;

第四、五章:练习

我将最后两个部分变成一个部分总结一下吧,因为都是编程实战了。
dada租车系统
分析:
首先现实生活中,成功租车,要干些什么?
1.去租车店铺,找到老板询问;
2.看都有啥车(车的用途,车的大小,车的牌子);
3.看租车价格;
4.租几天;
5.付钱;
6.租车成功;
在程序中,需要提供那几步?与上面有啥不同?
去租车店铺肯定不用了,即:
1.欢迎
2.询问是否租车
3.提供车型,品牌,用途,载重,价格;
4.询问租几天;
5.经过计算告诉总价;
6.是否确认租车;
7.租车成功;

到这里你会发现基本的流程图已经出来了;
对于新手来说,最后画出流程图来,这样对编写程序非常有帮助;

流程图出来之后,我们需要事件转换为代码,怎么处理呢?
根据上面的流程,得到以下处理方式:
1.输出语句;
2.输出语句,接收输入(scanner),校验输入(if语句);
3.输出提示语句,罗列出车辆信息(数组,类,继承,多态);
4.提示语句,询问天数,接收输入,计算价格;
5.输出选定的车辆信息,总价;
6.输出提示,是否确认租车;
7.输出提示付款,接收用户输入;
8.输出提示,租车成功;

再根据以上代码分析,写出程序;为了方便阅读,我将类写在一个.java文件里了;

package com.xjeport;

import java.util.Scanner;

public class Main {

public Car[] cars=new Car[]{
        new HCar("东风","东风1号",10),
        new HCar("东风","东风2号",20),
        new MCar("长安","长安BUS",60),
        new MCar("长安","长安car",7),
        new PCar("皮克","皮克1号",4,5),
        new PCar("皮克","皮克2号",2,20),
};

public static void main(String[] args) {
// write your code here
    Main m=new Main();
    //欢迎
    System.out.println("欢迎来到‘dada租车’系统!");
    System.out.println();
    //询问
    System.out.println("请问您是否需要租车?");
    System.out.println("1.是,我要租车");
    System.out.println("2.不,我随便转转");
    //用户输入
    Scanner sc=new Scanner(System.in);
    int userSc=sc.nextInt();
    //判断

    m.wellcom(userSc);

    //车型列表
    for(int i=0;i<m.cars.length;i++){
        System.out.print((i+1)+":");
        m.cars[i].sayIam();
    }
    //用户输入
    int userChiose=sc.nextInt();
    //判断
    m.chioseNum(userChiose,m);

    System.out.println("确定付款?");
    System.out.println("1.是的,我确定!");
    System.out.println("2.不,我没钱!");
    int sour_money=sc.nextInt();
    if (sour_money==1){
        System.out.println("恭喜您租车成功");
        System.exit(0);
    }else {
        System.out.println("这位同学,我看你长得不像没钱人啊?欢迎下次再来!");
        System.exit(0);
    }
}
public void wellcom(int userSc){
    if(userSc==1){
        System.out.println("我们为您提供以下车型,请输入序号选择:");
    }else {
        System.out.println("哦,真让人遗憾!");
        System.exit(0);
    }
}
public void chioseNum(int userChiose,Main m){
    Scanner reSc=new Scanner(System.in);
    if(userChiose>0 && userChiose<=m.cars.length){
        System.out.println("您的选择是:");
        m.cars[userChiose-1].sayIam();
        System.out.println("请输入您要租多少天?");
        int time_Car=reSc.nextInt();
        System.out.println("经过计算,您一共需要付款"+time_Car*m.cars[userChiose-1].price+"元");
    }else {
        System.out.println("您的输入有误!请重新选择:");
        int reChiose=reSc.nextInt();
        chioseNum(reChiose,m);
    }
}
}
/**
 * Created by Administrator on 2016-7-19.
 * CarN-品牌
 * name-车名
 * purp-用途
 * num-载量
 * price-单价
 */
class Car {
    String CarN;
    String name;
    String purp;
    int num;
    double price;

    public void sayIam(){};
}
class HCar extends Car{
    String thisNum;
    public HCar(String CarN,String name,int num){
        this.CarN=CarN;
        this.name=name;
        this.num=num;
        this.thisNum=num+"吨";

        this.price=900;
        this.purp="货运车";
    }

    public void sayIam(){
        System.out.println("品牌:"+CarN+",型号:"+name+",载重:"+thisNum+",一天价格"+price+"元,用途类型:"+purp);
    }
}
class MCar extends Car{
    String thisNum;
    public MCar(String CarN,String name,int num){
        this.CarN=CarN;
        this.name=name;
        this.num=num;
        this.thisNum=num+"人";

        this.price=600;
        this.purp="载人车";
    }
    public void sayIam(){
        System.out.println("品牌:"+CarN+",型号:"+name+",载客:"+thisNum+",一天价格"+price+"元,用途类型:"+purp);
    }
}
class PCar extends Car{
    int Hnum;
    int Mnum;
    String thisHnum;
    String thisMnum;
    public PCar(String CarN,String name,int num,int Hnum){
        this.CarN=CarN;
        this.name=name;
        this.Mnum=num;
        this.thisMnum=this.Mnum+"人";
        this.Hnum=Hnum;
        this.thisHnum=this.Hnum+"吨";
        this.price=300;
        this.purp="通用车";
    }
    public void sayIam(){
        System.out.println("品牌:"+CarN+",型号:"+name+",载客:"+thisMnum+",载重:"+thisHnum+"元,一天价格"+price+",用途类型:"+purp);
    }
}