java类与类之间关系

继承 is-a

1.子类继承父类,通过关键字 extends
2.子类的对象可以调用父类中的(public protected)属性和方法
3.子类可以添加自己独有的属性和方法
4.子类从父类中继承过来的方法不能满足子类需要,可以在子类中重写父类方法
5.每一个类都有继承类,如果不写extends关键字,默认继承object,如果写了extends则继承后面那个父类
7.继承在内存中的存储形式
8.this(代替是当前调用方法属性时的那个对象, 不一定是当前类的对象)
super(代替的是当前调用方法属性时的那个对象的父类对象)
可以调用构造方法,但是必须放在第一行;构造方法之间不能互相调用
重写override 重载overload

  • 类 产生两个继承关系的类 一个类中的一组方法
    子类重写父类的方法
  • 权限 子类可以大于等于父类 没有要求
  • 特征 final static abstract 没有要求
    父类方法是final 子类不可重写
    父类方法是static 子类不存在
    父类方法是abstract 子类必须重写
    (子类是具体必须重写 否则子类是抽象类 可以不重写)
  • 返回值 子类可以小于等于父类 没有要求
  • 名字 子类与父类一致 一个类中的好多方法名必须一致
  • 参数 子类与父类一致 每个方法的参数必须不一致(个数、类型、顺序)
  • 异常 运行时编译 没有要求
    如果父类方法抛出运行时异常
    子类可以不予理会
    如果父类方法抛出编译异常
    子类抛出异常的个数少于等于父类
    子类抛出异常类型小于等于父类
  • 方法体 子类的方法内容与父类不一致 每一个重载的方法 执行过程不一致

包含(组合、聚合、关联)has-a

1.组合: 人和大脑 人和心脏 整体和部分的关系,不可分割 要么都出现,要么都消亡
2.聚合:汽车和车轮 电脑和主板;整体和部分的关系 创建时有可能分开
3.关联:人和汽车 人有电脑 整体和部分的关系 可以分割 后来形成在一起
一个类的对象,是另外一个类的属性(房间和电脑、房子和房间、楼和房子、小区和房子)

  • 新建一个房间类,一个电脑类,房间类中有一个属性是电脑类

依赖 use-a

  • 屠夫 杀 猪 农夫 养 猪
  • 新建屠夫类、农夫类、猪类
  • 屠夫类中有杀猪方法、农夫类中有养猪方法、猪类有成长方法和被杀方法
public class Pig {

    private String name;
    private Integer weight;

    public void bekill(){
        System.out.println("我是猪,被杀啦");
    }

    public void growup(int mon){
        this.weight = 2;
        for (int i=0;i<mon;i++){
            weight *= 2;
            System.out.println(this.weight);
        }
    }

    public Integer getWeight(){
        return this.weight;
    }
}
public class Butcher {

    public void shazhu(Pig pig){
        Integer we = pig.getWeight();
        System.out.println("猪的体重:" + we);
        if (we>=16){
            pig.bekill();
        }else {
            System.out.println("猪太小了 长长再杀");
        }

    }
}
public class Farmer {

    public Pig yangzhu(Integer mon){
        Pig pig = new Pig();
        pig.growup(mon);
        return pig;

    }
}
public class Test {

    public static void main(String[] args) {
        Farmer farmer = new Farmer();
        Pig pig = farmer.yangzhu(2);
        Butcher butcher = new Butcher();
        butcher.shazhu(pig);


    }
}

运行结果

4
8
16
猪的体重:16
我是猪,被杀啦
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容