Java学习之路 —— Day3(内部类、枚举、泛型、API)

1. 内部类

成员内部类
就是类中的一个普通成员,类似普通的成员方法、成员变量。(套娃)

public class Outer {
    public class Inner {
        private String name;
        public static String school;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}
public class Main {
    public static void main(String[] args) {
        Outer.Inner in = new Outer().new Inner();
        in.setName("jehan");
        Outer.Inner.school = "CQUPT";
        System.out.println(Outer.Inner.school + " " + in.getName());
    }
}

静态内部类
有static修饰的内部类,属于外部类自己持有。使用它时就像使用静态方法一样就行,只能访问外部类的静态成员,不能访问外部类的非静态成员。

匿名内部类(重点)
一种特殊的局部内部类;不需要为这个类声明名字。

  • 特点:匿名内部类本质就是一个子类,并会立即创建出一个子类对象;
  • 作用:用于更方便的创建一个子类对象;
  • 通常作为一个参数传递给函数

2. 枚举

枚举是一种特殊类。

  • 枚举类的第一行,只能写一些合法的标识符,多个名称用逗号隔开。
  • 这些名称,本质是常量,每个常量都会记住枚举类的一个对象。
  • 枚举类的构造器都是私有的,因此,枚举类对外不能创建对象。
  • 枚举类都是最终类,不可以被继承。
    在这里插入图片描述
public enum A {
    // 注意:枚举类的第一行必须罗列的是枚举对象的名称
    X, Y, Z;
    private String name;

    // 构造器都是私有的

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
public class Main {
    public static void main(String[] args) {
        A a1 = A.X;
        System.out.println(a1);
    }
}

3. 泛型

这一块和C++差不多,都是尖括号里面声明变量类型。

不过定义的时候比C++简单,只需要在类名后面加尖括号就行了。

需要注意的是,泛型不支持基本数据类型,只支持对象类型(引用数据类型)。我们知道,java的引用数据类型是在堆中创建的对象,引用数据类型的变量实际上是一个指向对象的指针,通过这个指针可以访问对象的属性和方法,具体的有4大类:类、接口、数组、字符串

所以int这些基本数据类型就不行,但java提供了Integer这样的引用数据类型

public class MyArrayList<类型变量E, 类型变量T> {
	public boolean add(E e) {
		return true;
	}
}

泛型接口

修饰符 interface 接口名<类型变量, 类型变量, ...> {

}
修饰符 class 类名 implements 接口名<类型变量> {
	@Override
	...
}

泛型方法
泛型方法放泛型的位置有点不一样,是放到返回值前面。

修饰符 <类型变量> 返回值类型 方法名(形参) {
}

?在泛型中作为通配符,在使用时表示一切类型来使用
public static go(ArrayList<? extends Car> cars) {}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值