一、访问控制
控制等级/可否直接访问 | 同一个类· | 同一个包 | 不同包的子类 | 不同包非子类 |
私有 | √ | |||
默认 | √ | √ | ||
保护 | √ | √ | √ | |
公有 | √ | √ | √ | √ |
1.私有:private
2.默认
3.保护;protected
4.公有:public
package test3;
public class test29 {
//一个java文件只可以有一个公共类 public class
//公共类不一定非要包含主函数,但是有主函数一定要放到公共类里面
private int a = 1;// 私有级别
int b = 2;// 默认级别
protected int c = 3;// 受保护级别
public int d = 4;// 公有级别
void f() {
// 在同一个类中,abcd都可被使用
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}
//同一个包中
class B {
//则私有不行
void f() {
test29 A1 = new test29();
System.out.println(A1.a);
System.out.println(A1.b);
System.out.println(A1.c);
System.out.println(A1.d);
}
}
package test1;
import test3.test29;//导包
public class test330 {
}
class C extends test29{
void f()
{ //私有、默认访问不到
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}
//同一个包中
class BD{
//则私有不行
void f() {
test29 A1 = new test29();
//只有公有可以访问的到
System.out.println(A1.a);
System.out.println(A1.b);
System.out.println(A1.c);
System.out.println(A1.d);
}
}
2、final关键字
package test;
//2.final关键字
//final修饰变量 只可以被赋值一次从此就不可以修改
//1,funal修饰成员变量
//2.final修饰成员方法
//final修饰类
public class test12 {
}
class A {
// final修饰成员变量 只可以被赋值一次
// 普通成员变量 1.定义赋初值,2.构造方法里面赋初值
final int a = 1;
final int b;
// final修饰static 静态成员变量 1.定义赋初值,2.构造方法里面赋初值 2.static代码块
final static int c = 1;
final static int d;
A() {
b = 2;
}
static {
d = 3;
}
final void f() {
System.out.println("A的final修饰成员方法");
}
}
class B extends A {
// final修饰成员方法不可以被覆盖
void f() {
}
}
final class C extends A{
}
//2.3 final修饰类,类不能被继承
class D extends C{
}