Java基础-江河计划

Java 基础

【一】 继承

1.1 目的

理清对象间关系,避免代码中的重复代码。

1.2 代码:

public class lesson1 {
    public static void main(String[] args) {
        CD cd = new CD("叶惠美CD","周杰伦",1,2,"CD","叶惠美-JAY-CD");
        cd.print();
        System.out.println();
        DVD dvd = new DVD("叶惠美DVD","周杰伦、方文山",2,4,"DVD","叶惠美-JAY-DVD");
        dvd.print();
    }
}

abstract class item{
    private String title;
    private String artist;
    private int numofTracks;
    private int playingTime;
    private String oomment;

    public item() {}

    public item(String title, String artist, int numofTracks, int playingTime, String oomment) {
        this.title = title;
        this.artist = artist;
        this.numofTracks = numofTracks;
        this.playingTime = playingTime;
        this.oomment = oomment;
    }

    public void print() {
        System.out.print(toString());
    }

    @Override
    public String toString() {
        return "item{" +
                "title='" + title + '\'' +
                ", artist='" + artist + '\'' +
                ", numofTracks=" + numofTracks +
                ", playingTime=" + playingTime +
                ", oomment='" + oomment + '\'' +
                '}';
    }
}

class CD extends item {
    private String cdName;

    @Override
    public void print() {
        super.print();
    }

    public CD(String title, String artist, int numofTracks, int playingTime, String oomment, String cdName) {
        super(title, artist, numofTracks, playingTime, oomment);
        this.cdName = cdName;
    }

    @Override
    public String toString() {
        return super.toString() + "CD{" +
                "cdName='" + cdName + '\'' +
                '}';
    }
}

class DVD extends item {
    private String dvdName;

    public DVD(String title, String artist, int numofTracks, int playingTime, String oomment, String dvdName) {
        super(title, artist, numofTracks, playingTime, oomment);
        this.dvdName = dvdName;
    }

    @Override
    public void print() {
        System.out.print(toString());
    }

    @Override
    public String toString() {
        return super.toString() + "DVD{" +
                "dvdName='" + dvdName + '\'' +
                '}';
    }
}

【二】 子类与父类关系

关系:

1.当构造子类对象时,首先要确保父类所拥有的成员变量得到恰当的初始化,定义初始化(优先)、构造器

2.当子类的成员变量与父类成员变量名字相同时,父类成员变量’隐形’了。但是当子类调用setXX方法时,会影响到父类变量

【三】 多态变量

1.1 定义

1.Java的对象变量是多态的,它们能保存不止一种类型的对象。
2.它们可以保存的是声明类型的对象,或声明类型的子类的对象
3.当把子类的对象赋给父类的变量的时候,就发生了向上造型

1.2 代码:

在这里插入图片描述

【四】 向上造型

1.1 说明

1.子类的对象可以赋值给父类的变量
2.父类的对象不能赋值给子类的变量!
Vechicle v;
Car c = new Car();
v = c; (√)
c = v; (×)
3.可以用造型(只有当v这个变量实际管理的是Car才行)
c = (Car) v;

【五】 多态

1.1 定义

函数调用的绑定
1.当通过对象变量调用函数的时候,调用哪个函数这件事情叫作绑定。
1.1 静态绑定:根据变量的声明类型来决定
1.2 动态绑定:根据变量的动态类型来决定
2.在成员函数中调用其他成员函数也是通过this这个对象变量来调用的

1.2 代码:

    //假设 items 里面有2个对象,一个是CD,一个DVD。那么当执行print方法时,他们会各自调用各自的print实现。
    public void list(){
        for (Item item : items) {
            item.print();
            // 1. item1: cd.print();
            // 2. item2: dvd.print();
        }
    }

【六】 Object类

1.1 定义

单根结构,所有对象均继承于Object类
toString()
equals()

【七】 封装

说明

增加可扩展性
可以运行的代码!=良好的代码
对代码做维护的时候最能看出代码的质量
如果想要增加一个方向,如down或up

用封装来降低耦合
Room类和Game类都有大量的代码和出口相关
尤其是Game类中大量使用了Room类的成员变量
类和类之间的关系称作耦合
耦合越低越好,保持距离是形成良好代码的关键

1.成员变量 private
2.根据业务,各自对象负责各自的实现。比如,将显示房间方位的方法放入Room对象。Game只负责移动。-解耦方法

【七】 可扩展性

说明

Room中的方向(东西南北)【重复属性】->【用集合封装】
之前北:Room northRoom = new Room();
现在应该是
Map<String,Room> rooms = new HashMap<String,Room>();
rooms.put(“north”,Room);

【八】 框架加数据

说明

命令的解析是否可以脱离if-else
定义一个Handler来处理命令
用Hash表来保存命令和Handler之间的关系

public class Handler{
public void doCmd(String commond){
//doSomething 做业务处理
}
public boolean isBye(){
// 判断具体是哪种handler实现
}
}

public class HandlerGo extends Handler{

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值