栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2022.0512学习Java笔记之代码块、内部类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2022.0512学习Java笔记之代码块、内部类

代码块

代码块分为普通代码块、构造块、静态块、同步块。

普通代码块:即一个简单的{}

构造块:构造块写在类之中,并且优先于构造方法执行,而且每当有对象实例化产生时都要执行构造块,会进行重复调用,但一般尽量不去使用。

静态块:静态块是使用static关键字声明的代码块,使用时分两种情况 一种是定义在普通类之中,另一种是在主类之中。并且优先于构造块执行,不管有多少个实例化对象,静态块只执一次

内部类

一.内部类的基本概念

所谓内部类就是在一个类的内部定义了类的结构形成的代码形式 如下代码:

class Outer { //外部类
	private String msg = "Hello World!";
	class Inter{ //内部类
		public void print(){
			System.out.println(Outer.this.msg);
		}
	}
	public void fun(){
		new Inter().print();
	}
}
public class TextDemo10{
	public static void main(String[] args) {
		Outer out = new Outer();
		out.fun();
	}
}

内部类的缺点:类的结构应该是属性和方法两个部分,但是多了一个类,这样内部类就破坏了程序

优点:可以方便访问外部类之中定义的私有成员,同理 外部类可以方便的访问内部类的私有成员

其中内部类调用外部类时使用“外部类名.this.属性”

外部类访问内部类私有成员实例

class Outer { //外部类
	private String msg = "Hello World!";
	class Inter{ //内部类
		private int num = 100;//内部类私有成员
		public void print(){
			System.out.println(Outer.this.msg);
		}
	}
	public void fun(){
		Inter in = new Inter();
		in.print();
		System.out.println(in.num);//内部类私有
	}
}
public class TextDemo10{
	public static void main(String[] args) {
		Outer out = new Outer();
		out.fun();
	}
}

以上代码中内部类最终都在外部类的方法中操作,那么Java中内部类也可以直接由主方法调用语法为:“外部类.内部类  内部类对象 = new 外部类().new 内部类();”        例

class Outer { //外部类
	private String msg = "Hello World!";
	class Inter{ //内部类
		public void print(){
			System.out.println(Outer.this.msg);
		}
	}
}
public class TextDemo10{
	public static void main(String[] args) {
		Outer.Inter in = new Outer().new Inter();
		in.print();
	}
}

如果一个内部类不想在外使用,那么就可以使用关键字private声明

二.使用static定义内部类

如果说现在一个内部类不希望受到外部类中属性的控制,而可以去直接实例化对象,那么在定义内部类的时候可以使用关键字static声明,此时的内部类严格上就是一个外部类了,只能够调用所在外部类的static属性,此时在定义内部类对象的时候,格式也发生变化,“外部类.内部类  内部类对象 = new 外部类.内部类();” 例

class Outer { //外部类
	private static String msg = "Hello World!";
	static class Inter{ //内部类
		public void print(){
			System.out.println(msg);
		}
	}
}
public class TextDemo10{
	public static void main(String[] args) {
		Outer.Inter in = new Outer.Inter();
		in.print();
	}
}

三.在方法中定义内部类

理论上,内部类可以在任何位置上定义,这就包括了类中、代码块中、方法中。

方法中的内部类如果想要访问方法的参数或者是方法定义的变量,则参数或者变量前应该加上关键字final(此处只是一个标记并非作用)。例如

class Outer { //外部类
	private static String msg = "Hello World!";
	public void fun(final int num){
		class Inter{ //方法里面定义内部类
			public void print(){
				System.out.println(Outer.this.msg);
				System.out.println(num);
			}
		}
		new Inter().print();
	}
}
public class TextDemo10{
	public static void main(String[] args) {
		new Outer().fun(100);
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/878532.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号