织梦素材网站模板全运会为什么建设网站
web/
2025/10/7 6:19:33/
文章来源:
织梦素材网站模板,全运会为什么建设网站,wordpress 列表主题,有没有专门做二手车网站day29
内部类
分类 非静态成员内部类 静态成员内部类 局部内部类 匿名内部类 概念 在一个类的内部#xff0c;再定义一个完整的类 特点#xff1a; 编译之后可以生成一个独立的字节码class文件 内部类可以直接访问外部类的私有成员#xff0c;而不会破坏其封装性 可以为外…day29
内部类
分类 非静态成员内部类 静态成员内部类 局部内部类 匿名内部类 概念 在一个类的内部再定义一个完整的类 特点 编译之后可以生成一个独立的字节码class文件 内部类可以直接访问外部类的私有成员而不会破坏其封装性 可以为外部类提供必要的内部功能组件 package com.saas.oo1;
public class Outer {
private int num 100;
class Inner{public void test(){System.out.println(num);}}
} 在Inner类中可以访问Outer类里面的私有成员num 因为Inner类是Outer类的内部类 内部类可以访问外部类的私有成员 内部类的成员访问 package com.saas.oo1;
public class Outer03 {
int num;
public void test01(){System.out.println(this is test01 method.);}
public class Inner01{double score;
public void test02(){System.out.println(this is test02 method.);}}
} package com.saas.oo1;
public class TestOutter03 {
public static void main(String[] args) {Outer03 o new Outer03();
o.num 1000;System.out.println(o.num);o.test01();
System.out.println();
Outer03.Inner01 i01 new Outer03().new Inner01();
i01.score 99.99;System.out.println(i01.score);i01.test02();}
} Inner01作为Outter03的内部类其地位与非静态成员num和test01类似 想要访问num和test01就必须得创建Outter03对象 类似的也可以通过Outter03对象来访问Inner01 所以就像访问num和test01一样访问Inner类中的score和test02 package com.saas.oo1;
public class Outer03 {
int num;
static int n;
public void test01(){System.out.println(this is test01 method.);}
public static void test03(){System.out.println(this is test03 method.);}
public class Inner01{double score; // 非静态内部类中可定义非静态属性
//static double score02; // 非静态内部类中不可定义静态属性
public void test02(){ // 非静态内部类中可定义非静态方法System.out.println(this is test02 method.);}
// public static void test05(){ // 非静态内部类中不能定义静态方法
//
// }}
public static class Inner02{static double score;
double score02; // 静态内部类中可以定义非静态成员变量
public static void test04(){System.out.println(this is test04 method.);}
public void test06(){ // 静态内部类中可以定义非静态成员方法System.out.println(this is test06 method.);}}
} package com.saas.oo1;
public class TestOutter03 {
public static void main(String[] args) {Outer03 o new Outer03();
o.num 1000;System.out.println(o.num);o.test01();
System.out.println();
Outer03.Inner01 i01 new Outer03().new Inner01();
i01.score 99.99;System.out.println(i01.score);i01.test02();
System.out.println();
Outer03.n 2000;
System.out.println(Outer03.n);Outer03.test03();
System.out.println();
Outer03.Inner02.score 88.88;System.out.println(Outer03.Inner02.score);Outer03.Inner02.test04();
System.out.println();
Outer03.Inner02 i02 new Outer03.Inner02();
i02.score02 77.77;System.out.println(i02.score02);i02.test06();}
} 在一个类的内部可以分别定义非静态内部类和静态内部类 非静态内部类中只能定义非静态成员变量和非静态成员方法访问该非静态成员如下 new Outter().new Inner().xxx 访问非静态成员变量
new Outter().new Inner().xxx(), 访问非静态成员方法 非静态内部类中不能定义静态成员属性和静态成员方法 静态成员内部类可以定义静态成员属性和静态成员方法访问该静态成员如下 Outer.Inner.xxx. 访问静态成员变量
Outer.Inner.xxx(). 访问静态成员方法 静态内部类中还可以定义非静态成员属性和非静态成员方法访问如下 new Outer.Inner().xxx 访问非静态成员变量
new Outer.Inner().xxx() 访问非静态成员方法 局部内部类 定义在外部类的方法中作用范围和创建对象的范围仅限于当前方法 局部内部类访问外部类当前方法中的局部变量时因无法保证变量的生命周期与自身相同变量必须得用final修饰注意jdk7的区别 限制类的使用范围 package com.saas.oo1;public class Outer05 {public void test(){// Inner in02 new Outer.Inner();
//
// in02.m 999;
// in02.test01();class Inner{int m ;public void test01(){System.out.println(this is test01);}}Inner in new Inner(); // 局部内部类的作用范围是从定义位置开始到方法结束in.m 12;System.out.println(in.m);in.test01();}public void test02(){
// Inner in new Inner(); // 局部内部类作用于某一个方法在当前方法中可以访问其他方法不能访问}public static void main(String[] args) {Outer05 o new Outer05();o.test();}
} 匿名内部类 没有类名的局部内部类一切特征都与局部内部类相同 必须继承一个父类或者实现一个接口 定义类、实现类、创建对象的语法合并只能创建一个类的对象 优点减少代码量 缺点可读性较差 package com.saas.oo2;public interface USB {void service();
} package com.saas.oo2;public class Mouse implements USB{Overridepublic void service() {System.out.println(mouse starts working...);}
} package com.saas.oo2;public class Test {public static void main(String[] args) {Mouse m new Mouse();m.service();System.out.println();USB keyBoard new USB() {Overridepublic void service() {System.out.println(键盘开始工作。);}};keyBoard.service();keyBoard.service();keyBoard.service();keyBoard.service();System.out.println();new USB(){Overridepublic void service() {System.out.println(风扇开始工作);}}.service();System.out.println();new USB(){Overridepublic void service() {System.out.println(小米su7汽车开始工作);}}.service();System.out.println();System.out.println(new Object() {Overridepublic String toString() {return hehe;}}.toString());}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88319.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!