使用范围:
Java中,外部类的修饰符只能是public或protected(默认)这两种;而类的成员(属性,方法,内部类)的修饰符可以是(public,protected,default,private)四种
作用域:
public:
当用使 public修饰类成员时,该成员可以在任意类中被访问(不管是包内还是包外的)
protected:
当用使 protected修饰类成员时,该成员可以被所在包内的任意类 或 其它包中与他有父子关系的子类访问
default:
类的成员不用(public,protected,private)访问修饰符修饰时默认为default,默认修饰的成员可以被所在包内的任意类访问
private:
当用使private修饰成员变量时,该类的成员仅能在该类内部被访问,或者通过public修饰方法(如:setxx()和getxx())来访问
扩展1:
一个类怎样调用另一个类中的属性和方法?
1.如果类的属性和方法是静态的(属性/方法使用了static修饰),可以直接通过类名调用,无需创建对象
如:
类名.变量名
类名.方法名()
2.如果类的属性和方法是非静态的,则需要使用该类的实例对象来调用
如:
类名 对象名=new 类名();
对象名.变量名
对象名.方法名()
3.如果另一个类的属性和方法是私有的,则不能被直接调用
//调用类成员的方法public class Person {public static void main(String[] args) {Teacher.teacher(); //调用静态方法System.out.println(Teacher.profession="老师"); //调用静态属性Student stu=new Student(); stu.student(); //调用非静态方法System.out.println(stu.profession="学生"); //调用非静态属性Worker work=new Worker();work.setProfession("工人"); //设置private属性值work.getProfession(); }}class Teacher{public static String profession;public static void teacher(){System.out.print("我是一名");}}class Student{public String profession;public void student(){System.out.print("我是一名");}}class Worker{private String profession;public String getProfession() {System.out.print("我是一名"+profession);return profession;}public void setProfession(String profession) {this.profession = profession;}}输出结果:我是一名老师我是一名学生我是一名工人
扩展2:
对象和实例的区别?
实例一定是对象,但对象不一定是实例 。因为对象是一个抽象概念,你可以说类是对象,也可以说实例是对象。
实例是需要分配内存的,不论是直接赋值,还是new出来的,都是在内存中具体存在的。
但对象可能是null的,比如:定义一个类时,只是在描述某类事物的特征和行为,并没有产生具体的数据,这个时候它是一个对象,但不是一个实例;只有通过new关键字创建该类的实例对象后,系统才会为这个对象分配空间,存储自身的数据,这个时候,这个对象就能一个实例
Test t=new Test();
new 类名时,就会在堆中创建一个实例对象,并为它分配一块内存空间,而t就是这个实例对象的引用(说具体点就是这个对象的内存地址的引用)
注:
1.外部类不能使用static修饰,只能使用public,abstract,final或默认无修饰
2.静态方法不能直接调用动态方法