1、封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
2、包的命名全部小写。
3、Java访问修饰符:
private:本类
默认:本类,同包。
protected:本类,同包,子类。
public:本类,同包,子类,其他。
4、内部类:就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。
内部类作用:内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类;内部类可以直接
访问外部类的所以数据,包括私有的数据;内部类所实现的功能,使用外部类也同样实现,只是有时候使用内部类更加方便。
内部类种类:成员内部类(也叫做普通内部类)、静态内部类、方法内部类、匿名内部类。
(1)Java中的成员内部类:
package com.imooc;
public class Outer {
private int a=99;
public class Inner{
int b=2;
public void test(){
System.out.println("访问外部类中的a:"+a);
System.out.println("访问内部类中的b:"+b);
}
}
public static void main(String[] args) {
Outer o=new Outer();
Inner i=o.new Inner();
i.test();
}
}
执行结果:
访问外部类中的a:99
访问内部类中的b:2
注意:
Inner类可以使用任意的访问控制符,如public、protected、private等;Inner类中定义的方法test()可以直接访问Outer类中的
数据,不受访问控制符的影响,如此处访问私有属性a;
使用成员内部类时,必须使用外部类对象来创建内部类对象,不能直接new一个内部类对象,外部类不能直接访问内部类的成员和方法 。
当内部类和外部类有相同的成员变量或者方法时,内部类默认访问自己的成员变量或方法,如果要访问Outer的,可使用this。
public class Outer {
private int b=99;
public class Inner{
int b=2;
public void test(){
System.out.println("访问外部类中的a:"+Outer.this.b);
System.out.println("访问内部类中的b:"+b);
}
}
(2)Java中的静态内部类:是static修饰的内部类。
public class Outer {
static int b=1;
public static class SInner{
int b=2;
public void test(){
System.out.println("访问外部类中的a:"+Outer.b);
System.out.println("访问内部类中的b:"+b);
}
}
public static void main(String[] args) {
SInner si=new SInner();
si.test();
}
}
注意:
创建静态内部类的对象时可以直接new;
静态内部类补鞥呢直接访问外部类的非静态成员,但是可以通过new 外部类().成员 的方式访问。
(3)Java中的方法内部类:就是内部类定义在外部类的方法中,方法内部类只能在该方法的内部可见,即只在该方法内可以使用。
package com.imooc;
public class Outer {
public void show(){
final int a=25;
int b=13;
//方法内部类
class MInner{
int c=2;
public void print(){
System.out.println("访问外部类的方法中的变量a:"+a);
System.out.println("访问内部类中的变量c:"+c);
}
}
MInner mi=new MInner();//创建内部类的对象
mi.print();//调用内部类的方法
}
public static void main(String[] args){
Outer ou=new Outer();
ou.show();//调用外部类的方法
}
}