泛型、权限修饰符以及集合的初步了解
1: 泛型
所谓泛型,就是允许在定义类、接口时通过一个标识 表示类中某个属性的类型或者是某个方法的返回值及参 数类型。这个类型参数将在使用时(例如,继承或实现 这个接口,用这个类型声明变量、创建对象时)确定(即 传入实际的类型参数,也称为类型实参)。
1.1带有泛型的方法
语法格式 例:
public <无意义的占位符> 返回值类型 方法名(参数列表) {
}
小提示:
- 占位符可以是二十六个字母其中任何一个,但开发中常用"T" (type)或者"E" (element)或者 "?".
- 参数列表也可以是泛型的。
- 泛型的方法一定是带有参数的才有意义。
- 泛型的类型必须是类,不能是基本数据类型。 需要用到基本数据类型的位置,拿包装类替换。
八大基本数据类型的包装类 :
byte : Byte
short : Short
int : Integer
long : Long
float : Float
double : Double
char : Character
boolean: Boolean
1.2带有泛型的普通类
语法格式 例 :
class 类名<无意义的占位符> {
}
class Person<T> {
// 参数列表的T与前面一致
public <T> void eat(T t) {
System.out.println(t);
}
// 泛型的约束性 此处的T与类名后面的T保持一致
public void eat1(T t) {
System.out.println(t);
}
// 因为类名后面的泛型在实例化对象时才确定数据类型,但是static修饰的方法在创建对象前已经存在,所以static修饰的方法的泛型与类无关
public static <E> void eat2(E e) {
System.out.println(e);
}
}
public class Demo2 {
public static void main(String[] args) {
Person<String> person = new Person<>();
// eat的参数可以是任意类型,因为eat的参数类型T与方法声明处的T保持一致,与类名后面的T无关
person.eat(89);
// eat1的参数只能是String类型,因为在实例化对象时,指定了T为String类型
person.eat1("吃饭");
}
}
1.3带有泛型的抽象类
语法格式 例 :
abstract class 类名<无意义的占位符> {
}
小提示 :
- 抽象类因为不能被实例化,所以需要声明一个普通类来继承,如果抽象类中带有泛型,那么子类中也需要有泛型。
abstract class Person<T> {
}
class Man<T> extends Person<T> {
}
1.4带有泛型的接口
语法格式 例 :
interface 接口名<无意义的占位符> {
}
2:权限修饰符
四种权限修饰符: public、protected、默认(不写)、private
类中 | 同一包下不同类 | 不同包下的子类 | 不同包下的不同类 | |
---|---|---|---|---|
private | √ | |||
默认(不写) | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
3:集合
Java 集合可分为 Collection 和 Map 两种体系:
Collection 接口:单列数据,定义了存取一组对象的方法的集合。
List:元素有序、可重复的集合。
Set:元素无序、不可重复的集合。
Map 接口:双列数据,保存具有映射关系“key-value 对”的集合
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程