天天看点

day15_学习总结day15_学习总结

day15_学习总结

包的含义

为了更好的管理java文件,对其java文件进行区分,其实质就是文件夹,用于分类java文件

命名规则:包名全部小写

根据功能/使用范围进行划分

一般采用的是公司域名反写
	eg:com.qf.javaee.pj
	
注意:包名书写在java文件中第一行
           

带包运行

带包运行有两种方式
方式一:
	在控制台中,如果需要通过导包运行java代码,须要先将java代码编译生成对应的.class文件,然后将包名对应的文件夹创建完毕,将.class文件复制到对应的包名下,在控制台中通过
				java 包名.类名	
	来运行
    eg:java com.pj.HelloWorld
方式二:
	通过
				javac -d. 源文件.java
		来编译,会自动生成包名的文件夹以及.class文件
	再通过
				java 包名.类名
	运行即可
           

修饰符

静态修饰符——static
状态修饰符——final
抽象修饰符——abstract
权限修饰符:public protected private 默认
权限修饰符访问权限:
			同一个包下同一个类中	同一个包下不同类或子类		不同包下的子类中	不同包下的无关类
public				Y					Y					Y				Y
protected			Y					Y					Y
默认					Y					Y					
private				Y	
           

内部类

成员内部类

成员内部类位于外部类的成员位置
class{
	class{//成员内部类
		
	}
}

成员内部类的的成员方法访问:
	外部类.内部类 对象 = new 外部类.new内部类();
	对象.内部类方法名();
	
成员内部类可以被private/static修饰
	被private修饰的成员内部类私有化,开发中使用较少
	被static修饰的成员内部类
		成员方法的访问:
			外部类.内部类 对象名 = new 外部类.内部类();
			对象名.成员方法名();
			或者
				new 外部类.内部类().成员方法名();
		当成员方法也被static修饰时:
			可以通过以下方式访问
				外部类.内部类.成员方法名();
		注意:非静态成员内部类中不能有静态属性		

           

局部内部类

局部内部类定义在方法内部
public void show(){
	class {
	
	}
}
在方法中如果要访问局部内部类中的成员时,需要在方法中创建局部内部类的对象,通过对象访问成员
           

变量问题

在成员内部类中访问变量的问题:
	变量名相同时遵循就近原则
           
class Outer{
	int num = 10;
	class Inner{
		int num = 20 ;
		public void show(){
			int num = 30;
			System.out.println(num);//输出结果为30
			System.out.println(this.num);//输出结果为20,this代表本类的对象地址值引用
			System.out.println(Outer.this.num);//输出结果为10,
		}
	}
}
           

匿名内部类

没有名字的类
格式:
new 抽象类/接口{
	重写的方法;
};

匿名内部类的实质:继承具体类的子类对象/继承了抽象类的子类对象/实现了接口的子实现类对象
           
当通过形式参数或者返回值类型为具体类,抽象类,接口时,用匿名对象类传递时:
	可以通过匿名内部类实现
	eg:
		interface Person{
			public void show();
		}
		
		class PersonDemo{
			public void method(Person person){
				System.out.println("method...");
			}
		}
		public class Test{
			public static void main(String[] args){
				PersonDemo pd = new PersonDemo();
				pd.method(new Pernson(){
					@Override
					public void show(){
						
					}
				});
			}
		}
	输出结果为:
    	method...
作为返回值同理也是如此