Java学习(六)类和类之间的关系

缪金谷 51 1

Java学习(六)类和类之间的关系

类和类之间的关系:

A is-a B 泛化(继承 实现)
A has-a B 包含(组合 聚合 关联)
A use-a B 依赖(依赖)(need-a)


泛化

  • 子类继承父类,通过一个关键字:extends

  • 子类的对象可以调用父类中(public/protected)的属性和方法 当做自己的来使用。

  • 子类可以添加自己独有的属性和方法

  • 构造方法严格意义上来说不算是子类继承过来的,只是单纯的在子类调用构造方法时默认调用父类的构造方法,父类构造方法之前自动执行父类的程序块

  • 如果子类从父类中继承过来的方法无法满足子类的需要,可以在子类中重写(覆盖)父类的方法-->方法重写override

  • 每一个类都有继承类,如果不写extends,则默认继承Object

  • Java中继承是单个存在的(单继承),每一个类只能有一个继承类(在extends后面只能写一个类)

  • this和super的使用

    • this和super都是指代词,代替的是对象

    • this代替的是当前执行方法时的那个对象,不一定是当前类的

    • super代替的是当前执行时对象的父类对象

    • 都能调用一般属性和方法

    • 可以放置在成员的任意位置(属性,方法,构造,块)

    • 可以调用构造方法(只能放在构造方法的第一行)

    • this和super在构造方法中调用另一个类的构造方法不能同时出现在第一行

例:

父类:

public class Animal{
   
}

子类:

//通过extends来继承父类
public class Person extends Animal{
   
}


包含

  • 包含关系(组合,聚合,关联)  

  • 从亲密程度上来讲不太一样

    • 整体和部分的关系,可以分割,后来形成在一起

    • 整体和部分的关系,创建时有可能是分开的

    • 整体和部分的关系,不可分割,要出现都出现,要消亡都消亡

    • 组合-->人和大脑 人和心脏的关系

    • 聚合-->汽车和车轮子 电脑和主板

    • 关联-->人有汽车 人有电脑

    • 从Java程序来描述这样的关系,通过一个类的对象当做另一个类的属性来存储

    例:

    父类:

    public class Car{
       public String brand;//汽车品牌
       public String color;//汽车颜色
       public Wheel wheel;//车里面有一个轮子(包含关系)
       //方法
       public void showCar(){
           System.out.println("车的品牌是"+brand+",车的颜色是"+color+"车里面有"+wheel.brand+"品牌"+wheel.color+"色的轮子");
           wheel.turn();
       }
       //构造方法
       public Car(){};
       public Car(String brand,String color,Wheel wheel){
           this.brand = brand;
           this.color = color;
           this.wheel = wheel;mm,
    }

    子类:

    public class Wheel{
       public String brand;//车轮的品牌
       public String color;//车轮的颜色
       //方法
       public void turn(){
           System.out.println("车轮在转");
       }
       //构造方法
       public Wheel(){};
       public Wheel(String brand,String color){
           this.brand = brand;
           this.color = color;
       }
    }

    主方法:

    public class Test {
       public static void main(String[] args){
           Car car= new Car("玛莎拉蒂","黄",new Wheel("米其林","蓝"));
           car.showCar();
       }
    }


    依赖

    • 不是整体和部分的关系,是因为某一件事产生了关系,临时组合在了一起,这件事做完了,关系即解散。如(屠夫杀猪、屠夫与猪的关系)

    Java程序体现的形式为:

    一个类的方法中使用到了另一个类的对象

    • 可以在方法中传递参数

    • 可以在方法中自己创建

    例:

    父类:

    public class Butcher {
       //屠夫的类
       //杀猪方法
       public void killPig(String name){
           Pig pig=new Pig(name);
           pig.beKilled();
       }
    }

    子类:

    public class Pig {
       public String name;//猪的名字
       public int weight=100;//猪的体重
       //方法
       public void beKilled(){
           System.out.println(name+"被杀了");
       }
       //构造方法
       public Pig(){};
       public Pig(String name){
           this.name = name;
       }
    }

    主方法:

    public class Test {
       public static void main(String[] args){
           //新建一个屠夫
           Butcher butcher = new Butcher();
           //执行杀猪方法
           butcher.killPig("佩奇");
       }
    }



    目录导航
  • Java学习(六)类和类之间的关系
      • 泛化
      • 包含
      • 依赖
  • 发表评论 (已有1条评论)

    评论列表

    2019-12-06 00:40:10

    文章不错支持一下吧