1.访问权限修饰符
从大到小的顺序为:public--protected--default--private
private--只能在同一类中使用;
default--不用写出来,默认不加.可以被同一包中的类使用
protected--可以被不同包的子类使用
public--可以被不同包的其它类使用
2.各种修饰符的修饰对象(可修饰哪些:类/接口/方法/属性)(多个修饰符连用是可以没有顺序的!)
1)访问权限修饰符:public/default---可修饰类/接口/方法/属性,default不用写出来;
补充:default还可用于修饰接口中的默认方法,必须标明,且不能与static共存.默认方法由实现类的实例对象调用(java8新特性);
2)静态修饰符:static --修饰属性/方法/代码块/类(只能是内部类);
---abstract与static不能共存(理解:被static修饰后的方法可与类同时初始化,被全局使用;而abstract修饰后需覆写后方可使用,时间上矛盾!)
---abstract与final不能共存(理解:被final修饰的方法不可覆写,被abstract修饰的方法需要被覆写,矛盾!所以无法共存)
补充:static还可修饰接口中的类方法,必须标明,且不能与default共存,类方法由接口直接调用(java8新特性);
---abstract与private不能共存(方法若被private修饰不可更改,abstract需要被覆写,矛盾!)
3)final--修饰类/属性/方法/方法中的参数(修饰后可被局部内部类访问);
4)abstract--修饰类/接口/方法;
3.关于修饰符的默认情况:
1)接口默认为 default;只能在本包中访问
接口中的变量默认为 public static final(即常量,命名时需全部大写,三个修饰符没有顺序,实际开发中通常不在接口中写变量);
接口中的方法/内部类/内部接口/内部枚举默认为 public abstract;
2)类中方法的权限修饰符若不写,则默认为default:举例如下:
1 interface IA{ 2 void show();//编译后:public abstract void show(); 3 } 4 class A implements IA{ 5 void show(){//类中方法的权限修饰符若不写,则默认为default.重写错误:这里使用的默认的访问修饰符 ,比父类的访问修饰符小了,这是不允许的。 6 System.out.println("Hello"); 7 } 8 } 9 m ain(){ 10 new A().show(); 11 }
==========================================================================================
3.包
java中的包,其实就是电脑中的文件夹,包中存放的是.class文件,当class文件很多的时候,采用多个包进行存放,称之为分包管理.
1).使用的类与当前类在一个包中,无需导包;
2).使用的类在java.lang中无需导包;
3).其它情况必须导包;
4).java常用系统包:
java.lang--基本包,自动导入,String等都在此包中;
java.lang.reflect--反射机制的包,java.lang的子包;
java.util--工具包,常用类库/日期操作等
java.text--文本的处理类库
java.sql--数据库操作包,提供各类数据库操作的类和接口
java.net--网络编程相关
java.io--输入/输出处理
java.awt--构成抽象窗口工具集的多个类,这些类用来构建和管理GUI
javax.swing--建立图形用户界面
5).目前为止用到的包总结:
java.lang--String System StringBuffer StringBuilder 包装类 Thread
java.util--Scanner Random ArrayList Arrays Date objects
java.io--BufferdReader BufferedWriter FileReader FileWriter
java.math--BigDecimal BigInteger
========================================================================================================================
4.内部类--成员内部类-局部内部类-匿名内部类
1)内部类也称为嵌套类(官方说法),是写在类中的类.分为成员内部类(写在成员变量位置)和局部内部类(写在方法里,很少用).匿名内部类是局部内部类的一种.
2)内部类中可以直接访问外部类中的所有成员
3)关于对局部变量/内部类成员变量/外部类成员变量的访问
1 public class Outer { 2 int a = 100; 3 class Inner{ 4 int a = 200; 5 public void printA(){ 6 int a = 300; 7 System.out.println("局部变量a="+a);//300 8 System.out.println("内部类的变量a="+this.a);//200 9 System.out.println("外部类的变量a="+Outer.this.a);//100 10 } 11 } 12 }
原文:http://www.cnblogs.com/huguangqin/p/7124033.html