Java基础:Day11笔记内容 (内部类、权限修饰符 )
2016-02-25 11:42
239 查看
1.内部类
写在类里面的类, 好处是可以访问外部类中的所有成员.
特点:
1、外部类要访问内部类的成员,必须创建对象。
2、内部类可以直接访问外部类的成员,包括私有(private)
内部类的分类
成员内部类: 内部类定义在外部类的成员位置。
局部内部类: 内部类定义在方法体内。
成员内部类
1.通过外部类的方法,创建内部类对象使用.
2.通过第三方类直接使用,成员内部类
格式: Outer.Inner in2 = new Outer().new Inner();
示例
class Student {
int age;
}
class Outer { //外部类
//成员位置,类中方法外
class Inner { //成员内部类
public void show() {
System.out.println(“Inner show()”);
}
}
//1.通过外部类的方法,创建内部类对象使用.
public void method() {
Inner in = new Inner();
in.show();
}
}
class InnerDemo3 {
public static void main(String[] args) {
Outer.Inner in2 = new Outer().new Inner();
in2.show();
}
}
运行结果
局部内部类: 一个类在另一个类的方法里
示例
class Outer {
public void show() {
int i = 10;//局部变量
class Inner {//局部内部类
public void test() {
System.out.println(“Inner test”);
}
}
Inner in = new Inner();
in.test();
}
public void method() {
//System.out.println(“i = ” + i);//java:21: 错误: 找不到符号
//Inner in = new Inner();//java:22: 错误: 找不到符号
}
}
class LocalInnerDemo {
public static void main(String[] args) {
Outer o = new Outer();
//o.method();
//使用局部内部类
o.show();//Inner test
}
}
运行结果
匿名内部类: 没有名字的内部类.
前提:存在一个类或者接口
格式:new 类名或者接口名() {重写方法};
本质:子类对象
示例
interface Jumpping {
public abstract void jump();//跳
}
class NiMingDemo {
public static void main(String[] args) {
//格式:new 类名或者接口名() {重写方法};
//匿名内部类:子类对象
new Jumpping() {
public void jump() {
System.out.println(“Jumpping!!!”);
}
}.jump();//创建了一个接口的实现类对象,这个对象没有名字,所以叫匿名对象
}
}
运行结果
匿名内部类的方法调用
1.通过匿名内部类的格式本身调用
2.多态调用
示例
interface Jumpping {
public abstract void jump(); //跳
}
class NiMingDemo2 {
public static void main(String[] args) {
//匿名内部类:子类对象
//调用方式1
new Jumpping() {
public void jump() {
System.out.println(“Jumpping!!!”);
}
}.jump();
//方式2 接口多态
Jumpping jp = new Jumpping() { //接口多态
public void jump() {//重写接口中的方法
System.out.println(“Jumpping!!!”);
}
public void test() {//子类特有方法
System.out.println(“子类特有的test()”);
}
};
jp.jump();
jp.jump();
//调用子类特有, 多态不能访问子类特有
//jp.test();//No java:42: 错误: 找不到符号
System.out.println(“—————————–”);
new Jumpping() { //接口多态
//重写接口中的方法
public void jump() {
System.out.println(“Jumpping!!!”);
}
//子类特有方法
public void test() {
System.out.println(“子类特有的test()”);
}
}.test();//ok
}
}
运行结果
定义包的格式:
package 包名;
多级包用.分开即可: package 包名1.包名2.包名3
多级包喜欢用倒置的域名, 例如:www.baidu.com: com.baidu.项目名.模块名
写在类外面
注意事项:
package语句必须是程序的第一条可执行的代码
package语句在一个java文件中只能有一个
如果没有package,就是在一个默认包下
示例
package cn.itcast;
//package cn.sina;
class PackageDemo {
public static void main(String[] args) {
System.out.println(“Hello World!”);
}
}
2.权限修饰符 (掌握)
本类 本包 外包的子类 外包的无关类
private(私有) YES
默认(啥也不写) YES YES
protected(保护) YES YES YES
public(公开) YES YES YES YES
部分笔记内容,整个笔记一共27天,打包下载:
网盘地址——链接:http://pan.baidu.com/s/1c1iem6c 密码:8lj8
写在类里面的类, 好处是可以访问外部类中的所有成员.
特点:
1、外部类要访问内部类的成员,必须创建对象。
2、内部类可以直接访问外部类的成员,包括私有(private)
内部类的分类
成员内部类: 内部类定义在外部类的成员位置。
局部内部类: 内部类定义在方法体内。
成员内部类
1.通过外部类的方法,创建内部类对象使用.
2.通过第三方类直接使用,成员内部类
格式: Outer.Inner in2 = new Outer().new Inner();
示例
class Student {
int age;
}
class Outer { //外部类
//成员位置,类中方法外
class Inner { //成员内部类
public void show() {
System.out.println(“Inner show()”);
}
}
//1.通过外部类的方法,创建内部类对象使用.
public void method() {
Inner in = new Inner();
in.show();
}
}
class InnerDemo3 {
public static void main(String[] args) {
Outer.Inner in2 = new Outer().new Inner();
in2.show();
}
}
运行结果
局部内部类: 一个类在另一个类的方法里
示例
class Outer {
public void show() {
int i = 10;//局部变量
class Inner {//局部内部类
public void test() {
System.out.println(“Inner test”);
}
}
Inner in = new Inner();
in.test();
}
public void method() {
//System.out.println(“i = ” + i);//java:21: 错误: 找不到符号
//Inner in = new Inner();//java:22: 错误: 找不到符号
}
}
class LocalInnerDemo {
public static void main(String[] args) {
Outer o = new Outer();
//o.method();
//使用局部内部类
o.show();//Inner test
}
}
运行结果
匿名内部类: 没有名字的内部类.
前提:存在一个类或者接口
格式:new 类名或者接口名() {重写方法};
本质:子类对象
示例
interface Jumpping {
public abstract void jump();//跳
}
class NiMingDemo {
public static void main(String[] args) {
//格式:new 类名或者接口名() {重写方法};
//匿名内部类:子类对象
new Jumpping() {
public void jump() {
System.out.println(“Jumpping!!!”);
}
}.jump();//创建了一个接口的实现类对象,这个对象没有名字,所以叫匿名对象
}
}
运行结果
匿名内部类的方法调用
1.通过匿名内部类的格式本身调用
2.多态调用
示例
interface Jumpping {
public abstract void jump(); //跳
}
class NiMingDemo2 {
public static void main(String[] args) {
//匿名内部类:子类对象
//调用方式1
new Jumpping() {
public void jump() {
System.out.println(“Jumpping!!!”);
}
}.jump();
//方式2 接口多态
Jumpping jp = new Jumpping() { //接口多态
public void jump() {//重写接口中的方法
System.out.println(“Jumpping!!!”);
}
public void test() {//子类特有方法
System.out.println(“子类特有的test()”);
}
};
jp.jump();
jp.jump();
//调用子类特有, 多态不能访问子类特有
//jp.test();//No java:42: 错误: 找不到符号
System.out.println(“—————————–”);
new Jumpping() { //接口多态
//重写接口中的方法
public void jump() {
System.out.println(“Jumpping!!!”);
}
//子类特有方法
public void test() {
System.out.println(“子类特有的test()”);
}
}.test();//ok
}
}
运行结果
定义包的格式:
package 包名;
多级包用.分开即可: package 包名1.包名2.包名3
多级包喜欢用倒置的域名, 例如:www.baidu.com: com.baidu.项目名.模块名
写在类外面
注意事项:
package语句必须是程序的第一条可执行的代码
package语句在一个java文件中只能有一个
如果没有package,就是在一个默认包下
示例
package cn.itcast;
//package cn.sina;
class PackageDemo {
public static void main(String[] args) {
System.out.println(“Hello World!”);
}
}
2.权限修饰符 (掌握)
本类 本包 外包的子类 外包的无关类
private(私有) YES
默认(啥也不写) YES YES
protected(保护) YES YES YES
public(公开) YES YES YES YES
部分笔记内容,整个笔记一共27天,打包下载:
网盘地址——链接:http://pan.baidu.com/s/1c1iem6c 密码:8lj8
相关文章推荐
- 使用Java8实现观察者模式的方法(上)
- java 基础之工厂
- Java语法糖之foreach
- Java语法糖之foreach
- java中public等权限问题和final的使用
- Java基础:Day10笔记内容 (多态概述、抽象类)
- JAVA 判断一个字符串是不是一个合法的日期格式format.setLenient(false);
- Eclipse(集成开发环境)
- java回顾之socket通信
- java springMVC生成二维码
- Mybatis/Ibatis例子(添加,修改,删除)
- eclipse使用时技巧与注意事项
- java 四种写文件比较
- 多线程下载原理
- spring(基础10) 注解@Value详解
- Java中常见的IO流及其使用
- spring DI 实现的模拟,依赖注入
- java全局变量引起的并发问题
- java中String对象的intern方法
- Spring 的动态数据源实现