Java基础:Day11笔记内容 (内部类、权限修饰符 )

来源:互联网 发布:魔法王座 知乎 编辑:程序博客网 时间:2024/05/17 21:06

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

0 0
原创粉丝点击