+ [2.4示例](#24_71)

1. 包

1.1 定义

Java 通过引入包的机制,来对这些类进行分门别类的管理。功能上有点类似于文件系统中的目录。

1.2 作用

(1)把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。

(2)如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。

(3)包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

如在 SDK 中,大多数被分组进名为 java 的核心包中,我们也可以创建自己的包和包含进此包的相关的类。同一包中类名是唯一的(可以理解为在同一个文件夹中不可以有同名文件)

1.3 用法

(1)创建包的语法:

package com.dzh.test01;
public class Test {
	public static void main(String[] args) {
	System.out.println("hello world");
	} 
}

在一个 java 的源文件中叧能有一句 package 语句,并且通常位于文件的第一行。

(2)引入包的语法:

import java.util.Scanner;
import java.util.\*;

两种写法都可以。java 机制会自动引入 java.lang 包,其它的需要使用 import 引入。

package com.dzh.test01;//创建包
import java.util.Date;//引入包
public class Test {
	public static void main(String[] args) {
		Date date = new Date();
		System.out.println("现在的时间:" + date);
	}
}

2. 接口

2.1概念

1、Java 中不允许类的多继承,但在解决实际问题过程中,仅仅依靠单一继承在很多情况下都不能将问题的复杂性表述完整。通过接口可以实现多继承。

如:Father 类有 playFootball( ),Mother 类有 sing( ),如果采用类的继承来产生一个 Son 类,则它叧能从一个类中继承。要么继承 Father,要么继承 Mother。

2、接口在面向对象的设计不编程中应用非常广泛,特别是实现软件模块间的连接方面有着巨大的优势。

2.2声明

如果一个抽象类中所有的方法都是抽象的,就可以将这个类用另外一种方式来定义,也就是接口定义。

[public] interface 接口名 [extends 父接口名列表] { 
	 数据类型 常量名=常数; 
	 返回值 方法名([参数列表]);
}

接口的实现通过类来完成,在定义类时使用“implements 接口名列表”短语,并在类体中实现接口中的抽象方法。接口和实现类之间的关系实质上是继承的关系 ; 一个类可以实现多个接口,从而实现多继承。

2.3注意事项

1、interface 是接口的关键字,定义接口和定义类相似。并被编译为 class 文件。
2、接口的访问控制符只有 public,如果使用 public 修饰符,则可以被所有类和接口使用,且接口名与文件名相同。如果不使用 public,则接口只能被同一个包中的类和接口使用。
3、接口中所有的方法都是 public abstract 即公共的抽象方法。
4、接口中可以有数据成员,这些数据成员默认都是 public static final 即公共类常量。

2.4示例

接口声明的示例:
public interface Father {
	void playFootball();
}
public interface Mother {
	void sing();
}
public class Son implements Father, Mother {
	@Override//重写方法
	public void sing() {
		System.out.println("Son is sing");


# 本次面试答案,以及收集到的大厂必问面试题分享:

![字节跳动超高难度三面java程序员面经,大厂的面试都这么变态吗?](https://s2.51cto.com/images/20240912/1726127249246952.jpg)