司机开不同的车(Java内部类种类于定义及编程实现)

本文介绍了Java编程中关于内部类的使用,包括成员内部类的创建和使用,以及如何通过匿名内部类实现司机驾驶不同车型的场景。展示了如何在Driver类中定义成员内部类Benz,并在TestDriver测试类中创建并调用司机驾驶汽车的方法,最后通过匿名内部类展示了司机驾驶宝马车的实现。
摘要由CSDN通过智能技术生成

项目三、

任务四、司机开不同的车

·创建Car接口
在这里插入图片描述
·创建Driver接口
在这里插入图片描述

·创建测试类TestDriver
在这里插入图片描述

1.基于Car接口创建成员内部类对象作为参数传给驾驶员对象的driver()方法
2.基于Car接口创建匿名内部类对象作为参数传给驾驶员对象的driver()方法

(一)编程实现

1、 创建汽车接口类

·在net.lixin.p03.t04包里创建Car接口
在这里插入图片描述
在这里插入图片描述

2.创建司机类

-在net.lixin.p03.t04包里创建Driver
在这里插入图片描述
-在Driver类里创建成员内部类Benz

在这里插入图片描述


package net.lixin.p03.t04;
/**

  • 功能:司机类

  • 作者:李信

  • 日期:2022年05月12日
    /
    public class Driver {
    /
    *

    • 成员内部类Benz
      */
      class Benz implements Car {
      private String model;
      private double price;
      private String color;

      public String getModel(){
      return model;
      }
      public void setModel(String model ){
      this.model=model;
      }
      public double getPrice(){
      return price;
      }
      public void setPrice(double price){
      this.price=price;
      }
      public String getColor(){
      return color;
      }
      public void setColor(String color){
      this.color=color;
      }
      @Override
      public void speak(){
      System.out.println(color+“色奔驰[”+model+“]单价”+price+“万~”);
      }
      @Override
      public void start(){
      System.out.println(“奔驰[”+model+“]起步…”);
      }
      @Override
      public void run(){
      System.out.println(“奔驰[”+model+“]行驶…”);
      }
      @Override
      public void stop(){
      System.out.println(“奔驰[”+model+“]停止…”);
      }

    }
    }

(1)DriverBenz的外部类,Benz就是Driver成员内部类==
(2).给Driver类添加name属性和==driver(Car car)==方法
在这里插入图片描述

3.创建测试司机类

·在net.lixin.p03.to4包里创建TestDriver
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package net.lixin.p03.t04;

/**
 * 功能:测试司机类
 * 作者:李信
 * 日期:2022年05月12日
 */
public class TestDriver {
    public static void main(String[] args) {
        //创建司机对象(外部类对象)
        Driver driver=new Driver();
        //设置及司机对象属性
        driver.setName("唐小刚");

        //基于司机对象(外部类对象)创建奔驰对象(内部类对象)
    Driver.Benz benz= driver .new Benz();
    //设置奔驰对象属性
    benz.setModel("梅赛德斯-AMG A 35 L 4MATIC");
    benz.setPrice(45);
    benz.setColor("蓝");
    //调用司机对象的驾驶方法
    driver.driver(benz);
}}

运行程序,查看结果

在这里插入图片描述

5.修改TestDriver类,演示匿名内部类

·匿名内部类是直接基于接口创建对象
在这里插入图片描述
在这里插入图片描述

package net.lixin.p03.t04;

/**
 * 功能:测试司机类
 * 作者:李信
 * 日期:2022年05月12日
 */
public class TestDriver {
    public static void main(String[] args) {
        //创建司机对象(外部类对象)
        Driver driver=new Driver();
        //设置及司机对象属性
        driver.setName("唐小刚");

        //基于司机对象(外部类对象)创建奔驰对象(内部类对象)
    Driver.Benz benz= driver .new Benz();
    //设置奔驰对象属性
    benz.setModel("梅赛德斯-AMG A 35 L 4MATIC");
    benz.setPrice(45);
    benz.setColor("蓝");
    //调用司机对象的驾驶方法
    driver.driver(benz);
    System.out.println("=================");

    //司机驾驶宝马车(采用匿名内部类方式)
        driver.driver(new Car() {
            private String model="全新BMW Z4敞篷跑车";
            private double price=55;
            private  String color="红";
            @Override
            public void start() {
               System.out.println("宝马["+model+"]起步.....");

            }

            @Override
            public void run() {
                System.out.println("宝马["+model+"]行驶.....");
            }

            @Override
            public void stop() {
                System.out.println("宝马["+model+"]停止.....");
            }

            @Override
            public void speak() {
                System.out.println(color+"色宝马["+model+"]单价:"+price+"万~");
            }
        });
}
}

6.运行程序,查看结果

在这里插入图片描述

(二)知识点讲解

一.在Java中,允许在一个类的内部定义类,这样的类称为内部类(inner class),在这个内部类·所在的类称作外部类(outer class)
在这里插入图片描述
1. 成员内部类定义: 在一个类中除了可以定义成员变量、成员方法,还可以定义类,这样的类被称为成员内部类。其实我们可以将内部类理解成为国中之国。
2.局部内部类定义: 局部内部类也叫做方法内部类,就是定义在某个局部范围中的类,它和局部变量一样,都是在方法定义中定义的,其有效范围只限于方法内部类。
3.静态内部类定义: 所谓静态内部类,就是使用static关键字修饰的成员内部类。静态内部类在成员内部类前增加了static关键字,在功能上,静态内部类中只能访问外部类的静态成员,同时通过外部类访问静态内部类成员时,可以跳过外部类从而直接通过内部类访问静态内部类成员。
4. 匿名内部类: 匿名内部类其实就是没有名称的内部类。再强调包含有接口类型参数的方法时,通常为了简化代码,可以直接通过匿名内部类的形式传入一个接口类型参数,在匿名内部类中直接完成方法的实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值