栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

文章目录
  • 项目三、
    • 任务四、司机开不同的车
    • (一)编程实现
      • 1、 创建汽车接口类
      • 2.创建司机类
      • 3.创建测试司机类
      • 运行程序,查看结果
      • 5.修改TestDriver类,演示匿名内部类
      • 6.运行程序,查看结果
    • (二)知识点讲解

项目三、 任务四、司机开不同的车

·创建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;

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;


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;


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. 匿名内部类: 匿名内部类其实就是没有名称的内部类。再强调包含有接口类型参数的方法时,通常为了简化代码,可以直接通过匿名内部类的形式传入一个接口类型参数,在匿名内部类中直接完成方法的实现。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/885603.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号