JAVA基础总结7——类包

版权声明:@wrial https://blog.csdn.net/qq_42605968/article/details/83378687

什么是类包,为什么要用它?
类包就是把很多很多繁琐的类打包使它更方便的管理,也可以解决类的重名问题,并且可以和修饰符配合使用控制其他人对类的访问权限
1.final关键字(定义的常量使用时用大写中间可以用下划线)
(1)final变量:相当于c语言中的define,被final定以后的变量就相当于一个常量
但其实只引用final关键字定义的一个变量它并不是一个恒定的值,它可以理解为每次运行时系统给分配的固定空间,那如果每次编译的数在不断变化,那它的值还会是第一个值吗?
当然不会,因为它的周期只有单个程序的运行时间,那该怎么改进?
给它前边加static让系统给它分配一个静态的存储区间
(2)final方法:final定义的方法不能被重写,定义一个private类型的方法隐式被指定为final类型
(3)final类:不允许任何类继承且不允许其他人改动
2.内部类
(1)成员内部类:在一个类的里边使用内部类,在内部类里可以定义一些外部无法使用的成员变量和成员方法
class out{
inner c=new inner();
private int a=0;
class inner{
int i=10;
}
}
内部类可以访问外部类的所有东西,包括private类型的,但是外部类不能访问内部类的i。
注:在操作内部类时必须建立在实例化基础上操作
out o=new out();
out.inner in=out.new innerC();//实例化内部类
out.inner in1=out.a;//访问外部类的变量a
(2)内部类向上转型为接口

如果将一个权限修饰符为private的内部类向上转型为其父类对象,或者直接向上转型为一个接口,在程序中就可以完全隐藏内部类的具体实现过程。可以在外部提供一个接口,在接口中声明一个方法。
interface OutInterface //定义一个接口
{
public void f();
}
class Outer
{
private class Inner implements OutInterface//定义一个内部类实现OutInterface接口
{
Inner(String a){ //内部类
System.out.println(a);
}

public void f(){//实现接口中的f()方法
System.out.println(“访问内部类中的f()方法”);
}
}

public OutInterface doit(){//定义一个方法,返回值类型为OutInterface接口
return new Inner(“访问内部类构造方法”);
}
}

public class test
{
public static void main(String[] args)
{
Outer out = new Outer(); //实例化一个Outer对象
OutInterface outinter = out.doit(); //返回一个OutInterface接口
outinter.f(); //外部对象调用f()方法
}
}
2.局部内部类:在方法里定义一个内部类
3.匿名内部类:一个不注重它自身的名称的内部类就可以设为匿名内部类
匿名类的实现语法:
return new H{
内部类方法体
};
匿名内部类在后边的学习也会经常遇到,到后边使用的时候再看看它的实例应用。

猜你喜欢

转载自blog.csdn.net/qq_42605968/article/details/83378687