一.泛型
在开发中对数据一致性的要求是比较看重的!!!
例如:
数组中存的数据 类型都是一致的。
但是数组有一个不好的地方,数组需要预先定义容量!!!
集合也是存储数据的,而且集合的容量是随数据的多少不断变化的
1.带有泛型的方法
语法格式:
public <T> 返回值类型 方法的名字 (参数列表) { }
与普通方法相同,带有泛型的方法也有4中形式:
无参无返回值的方法
有参无返回值的方法
无参有返回值的方法
有参有返回值的方法
public class Demo1 {
public static void main(String[] args) {
test(24);
test("小");
test('明');
test1();
test3("小红");
test3(48.7);
}
//使用泛型的写法
//这个T只是一个占位而已,如果你传了字符串 那么这个T就是String
//如果你传了一个整数 那么T 就是Integer
//具有广泛性和普适性
//其实方法的重载的升级版本
//无返回值有参数的
public static <T> void test (T t) {
System.out.println(t);
}
//无返回值 无参的方法,没有必要使用泛型 没有意义
public static <T> void test1 () {
T t = null;
//你这个结果和泛型有有啥关联?没有任何意义
System.out.println("嘻嘻哒");
}
//无参 有返回值的方法,有咩有必要使用泛型? 没有
public static <T> T test2() {
return null;
}
//有参 有返回值的方法,这个使用泛型有没有意义? 有!!!
public static <T> T test3 (T t) {
return t;
}
}
总结:
泛型的方法一定是带有参数的才有意义!!!
无参的都是无意义的,而且一定要注意带有返回值的
这个返回值是和参数的T 数据类型要保持一致的
2.带有泛型的类
语法格式:
class 类<T> { }
注意:在泛型类中如果写泛型方法的时候,不需要加<T>
class Animal<T> {
public void play (T t) {
System.out.println(t);
}
}
class Panda<T> extends Animal<T> {
@Override
public void play(T t) {
System.out.println(t);
}
}
public class Demo2 {
public static void main(String[] args) {
Panda<String> panda = new Panda<>();
panda.play("陪玩狗");
}
}
3.带有泛型的抽象类
语法格式:
abstract class 类名<无意义的占位符> { }
abstract class A<T> {
abstract void testA (T t);
}
//抽象类,暂时没有办法直接实例化,只能再写一个普通类去继承抽象类
//总结:继承了带有泛型的抽象类,那么继承类也需要有泛型!!!
class TestA<T> extends A<T> {
@Override
void testA(T t) {
System.out.println(t);
}
}
public class Demo3 {
public static void main(String[] args) {
//是int的包装类 就是代表的是int类型的数据
TestA<Integer> testA = new TestA<>();
testA.testA(89);
}
}
4.带有泛型的接口
语法格式:
interface 接口的名字<无意义的占位> { }
//element 元素 Type 类型
interface B<T> {
//成员方法
void eat(T t);
}
class TestB<T> implements B<T> {
@Override
public void eat(T t) {
System.out.println(t);
}
}
public class Demo4 {
public static void main(String[] args) {
TestB<Character> testB = new TestB<>();
testB.eat('g');
}
}
2.权限修饰符【简单】
其实咱们已经见过权限修饰符了
public private default(不写是叫default) 默认的, protected
权限修饰符 四个:
权限修饰符去修饰 类, 成员变量 ,成员方法 等。赋予他们不同的权限
2.1private修饰符
private 修饰成员变量和成员方法。私有的
1.在本类中可以使用私有化的成员属性和成员方法
2.同一个包下面其他类不能使用私有化的成员属性和成员方法
3.其他的包的下面的其他类不能使用私有化的成员属性和成员方法
总结:private修饰的成员变量和成员方法只能在本类中使用
2.2不写(默认的)
修饰方法和属性
就是不写,默认的
1.在本类中默认的属性和方法是可以使用的
2.同一个包下面的其他类可以使用
3.其他包下面的其他类不能使用的
总结:默认的属性和方法只能在同一个包使用!!!
2.3protected
修饰方法和属性
1.同一个类中可以使用的
2.同一个包下面其他类可以使用
3.不同包下面,如果是子类可以使用但是其他类不能使用
总结:其他包下面其他类不能使用,但是继承的子类可以使用的
2.4public
修饰方法和属性
公开的,谁都可以
开发中最常用的是 private public