您的位置:首页 > 编程语言 > Java开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: