黑马程序员_内部类

---------------------android培训java培训、java学习型技术博客、期待与您交流! -------------------

今天是在传智学习的第十一天了,今天讲的内容主要的是内部类和包。

内部类是指定义在类内部类的类,按特性可以分为非静态成员内部类、局部内部类、静态内部类和匿名内部类。
非静态成员内部类和局部内部类昨天已讲过了,今天就不做总结了。
1、静态内部类
 用static修饰的内部类叫做静态内部类,如果一个类用static修饰,这个类就相当于是一个外部定义的类,所以static的内部类中可声明satic成员或非静态成员,并且可以通过public、protected、private修饰。
 例如下面这段代码,就是表示一个静态内部类。

	class Outer {
		private static int num = 10;
		static class Inner {
			public void print(){
				int age = 24;
				System.out.println(num);
				System.out.println(age);
			}
		}
	}

 静态内部类只能访问外部类的静态成员,非静态成员无法访问,可以访问内部类的非静态方法。
 注:生成一个静态内部类不需要外部类成员,这是静态内部类和成员内部类的区,静态内部类的对象可以直接生成:

 Outer.Inner i = Outer.new Inner(); 

//与调用静态成员一样,可以直接用类名调用,但是一般不会这么写,会把new放在前在,一般的写法如下:

Outer.Inner i = new Outer.Inner();

2、匿名内部类
 匿名内部类就是没有名字的内部类,是没有构造器的。
 注意:如果匿名内部类继承了一个含有带参数构造器的父类,则创建它的时候,必须要带上参数,并且在实现的过程中用super关键字调用相应的内容。
 匿名内部类可以做为实际参数进行传递,在多线程实现接口的时候,就要把类的匿名对象做为实际参数传给Thread的构造函数。
 匿名内部类不能定义任何静态成员、方法和类,并且不能用public、protected、private、static修饰。
 定义匿名内部类的前提:
 内部类必须是继承一个类或者实现接口。
 匿名内部类的格式:
 new 父类或者接口{定义子类的内容}

3、包
 在java中,可以用包来解决重名的问题
 a、创建包
 在java中用关键字package来创建包,必须放在源代码第一行

	package com.itheima;
		public class Demo{
			public static void main(String[] args){
		
		}
	}

 声明包名,须注意以下几点:
 1、包名最好有意义,一般是组织名倒置
 2、全部为小写
 3、放在源码第一行

 b、导入包
 在源码中用import导入包,导入包的时候,最好是需要哪个类就导入哪个类,不要用*,用*通配的时候,如果当前包中有同名的类,会优先导入当前包中的类,而不是指定包中的类,可能会发生不可预料的异常。

 c、编译并生成包
 带有包的类的源代码,在编译成字节码时,不能直接用javac.exe编译,需要带上"-d"这个参数带编译。
 在当前目录下生成包,如
 javac -d . Demo.java
 在指定目录下生成包,如
 javac -d 指定目录 Demo.java
 注:有包的类不能访问无包的类,无包的类可以访问有包的类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值