司机开不同的车
· 创建Car接口
· 创建Driver类
· 创建测试类TestDriver
- 基于Car接口创建
成员内部类
对象作为参数传给驾驶员对象的drive()方法。 - 基于Car接口创建
匿名内部类
对象作为参数传给驾驶员对象的drive()方法。
(一)编程实现
1、创建汽车接口
· 在p03.t04
包里创建Car
接口
```bash
/**
* 功能:
* 作者:李悦
* 日期:2022年05月12日
*/
public interface Car {
void start();
void run();
void stop();
}
2、创建司机类
在p03.t04
包里创建Driver
类
· 在Drive
r类里创建成员内部类Benz
/**
-
功能:
-
作者:李悦
-
日期:2022年05月12日
*/
public class Driver {
private String name;public String getName() {
return name;
}public void setName(String name) {
this.name = name;
}
public void driver(Car car) {
if (car instanceof Benz) {
Benz benz = (Benz) car;
benz.speak();
}
car.start();
car.run();
car.stop();
}/**
-
成员内部类
*/
class Benz implements Car {
private String model;
private double price;
private String color;public String getColor() {
return color;
}public void setColor(String color) {
this.color = color;
}public double getPrice() {
return price;
}public void setPrice(double price) {
this.price = price;
}public String getModel() {
return model;
}public void setModel(String model) {
this.model = model;
}@Override
public void start() {
System.out.println(“奔驰[” + model +“]跑步…”);
}@Override
public void run() {
System.out.println(“奔驰[” + model +“]行驶…”);}
@Override
public void stop() {
System.out.println(“奔驰[” + model +“]停止…”);}
public void speak() {
System.out.println(color + “色奔驰[” + model + “]单价:” + price + “万~”);
}
}
}
``
Driver
是Benz
的外部类,Benz
就是Driver
的成员内部类
给Driver
类添加name
属性和drive(Car car)
方法
-
3、创建测试司机类
在p03.t04
包里创建TestDriver
类
package 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.drive(benz);
}
}
4、运行程序,查看结果
· 运行TestDriver
类
5、修改TestDriver类,演示匿名内部类
· 匿名内部类是直接基于接口创建对象
package net.huawei.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.drive(benz);
System.out.println("=======================");
// 司机驾驶宝马车(采用匿名内部类方式)
driver.drive(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 + "]停止……");
}
public void speak() {
System.out.println(color + "色宝马[" + model + "]单价:" + price + "万~");
}
});
}
}
在p03t05
建DateDemo
package p03t05;
import javax.swing.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.logging.SimpleFormatter;
/**
* 功能:
* 作者:李悦
* 日期:2022年05月19日
*/
public class DateDemo {
public static void main(String[] args) {
// 创建简单日期格式对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
// 方法一、 采用Date类
Date foundDate = new Date(1949, 9, 1, 8, 0, 0 );
System.out.println("成立日期:" + sdf.format(foundDate));
Date currentDate = new Date();
System.out.println("当前日期:" + sdf.format(currentDate));
long interval = 0;//时间间隔(毫秒数)
interval = currentDate.getTime() - foundDate.getTime();
System.out.println("中华人民共和国成立了" + interval + "毫秒");
System.out.println("中华人民共和国成立了" + (interval / 1000) + "秒");
System.out.println("中华人民共和国成立了" + (interval / 1000 / 60) + "分");
System.out.println("中华人民共和国成立了" + (interval /1000 / 60 / 60)+ "小时");
System.out.println("中华人民共和国成立了" + (interval /1000 / 60 / 24) + "天");
// 方法二、 采用Calendar类
Calendar calendar1 = Calendar.getInstance();
calendar1.set(Calendar.YEAR, 1949);
calendar1.set(Calendar.MONDAY, 10);
calendar1.set(Calendar.DAY_OF_MONTH, 1);
calendar1.set(Calendar.HOUR, 8);
calendar1.set(Calendar.MINUTE, 0);
calendar1.set(Calendar.SECOND, 0);
System.out.println("成立日期:" + sdf.format(calendar1.getTime()));
Calendar calendar2 =Calendar.getInstance();
System.out.println("当前日期:" + sdf.format(calendar2.getTime()));
interval = calendar2.getTime().getTime() - calendar1.getTime().getTime();
System.out.println("中华人民共和国成立了" + interval + "毫秒");
System.out.println("中华人民共和国成立了" + (interval / 1000) + "秒");
System.out.println("中华人民共和国成立了" + (interval / 1000 / 60) + "分");
System.out.println("中华人民共和国成立了" + (interval /1000 / 60 / 60)+ "小时");
System.out.println("中华人民共和国成立了" + (interval / 1000 / 60 / 24) + "天");
}
}
· 运行结果