JAVA总结 DAY011 1028

DAY011

一、内部类

1.内部类的概述
1、定义在内部的类,就是内部类。可以定义在方法的内部,可以定义在类的内部。
2、根据定义的位置不同,可以分为:
成员内部类 //放在类中方法外的类
局部内部类 //放在方法中的类
3、成员内部类://根据修饰符或关键字
普通的成员内部类 //没有修饰符,没有关键字 class 类名
私有的成员内部类 //被private修饰的类 private class 类名
静态的成员内部类 //被static修饰的类 static class 类名
4、局部内部类
5、【匿名内部类】

2.普通的成员内部类
1、定义在成员位置上的类,就是成员内部类
2、定义格式:
class 类名{
class 内部类类名 {
内部类成员
}

}
3、成员内部类的说明:
1、内部类可以直接访问外部类的所有成员,包括私有成员
2、外部类访问内部类的成员,必须先创建内部类的对象
3、在外部类以外,创建内部类的对象的格式:
外部类名.内部类名 内部类对象名 = new 外部类名().new 内部类名();
代码示例

	public static void main(String[] args) {
		//普通的成员内部类
		//创建的内部类的对象
		Body.Heart ssssbh  = new Body().new Heart();
		ssssbh.show();
		Body b = new Body();
		b.test();
	}

class Body {
	int high = 180;
	//成员内部类
	class Heart{
		String color = "red";
		//内部类中的方法
		public void show(){
			System.out.println(high +"......"+ color + "心扑通扑通跳");
		}
	}
	//本类中的方法
	public void test(){
		System.out.println("-----------------------");
		Heart h = new Heart();
		h.show();
	}
}

3.私有的成员内部类
1、也是一个成员内部类,在成员内部类前面加上一个private关键字
2、访问方式说明:
1、在外部类以外,不能直接访问外部类中的私有成员内部类
2、可以在外部类中,定义一个访问私有成员内部类的公有方法,让外界可以调用公有方法,间接的访问外部类中的私有成员内部类。
代码示例

	public static void main(String[] args) {
		//私有的成员内部类不能被外部类访问
		//Body.Shen bs = new Body().new Shen();
		//System.out.println(new Body().sex);
		Body b = new Body();
		b.test();
	}

class Body {
	private int high = 179;
	//private int sex ;
	//私有的成员内部类
	private class Shen {
		int age = 18;
		
		public void show(){
			System.out.println(high + "..."+ age +"多敲代码,少看小电影");
		}
		
	}
	//对外提供公共的访问方法
	public void test(){
		System.out.println(high);
		Shen s = new Shen();
		s.show();
	}
}

4.静态的成员内部类
1、也是一个成员内部类,在成员内部类前面加上一个static关键字
2、访问特点:
1、成员内部类是外部类的静态成员,所以可以通过外部类名.内部类名的方式直接访问,而不需要创建外部类的对象
2、静态内部类中的非静态成员,需要将所在的内部类对象创建出来之后,才能被调用。
3、静态成员内部类的对象创建格式:
外部类名.内部类名 内部类对象名 = new 外部类名.内部类名();
代码示例

	public static void main(String[] args) {
		//静态的成员内部类
		//不能通过这种方式创建内部类对象
		//Body.Gan bg1 = new Body().new Gan();
		Body.Gan bg = new Body.Gan();
		bg.show();
		//System.out.println(Body.high);
		Body b = new Body();
		b.test();
	}

class Body {
	int high = 189;
	
	static class Gan{
		String color = "red";
		public void show(){
			System.out.println(new Body().high + "..." + color + "熬夜伤肝");
		}
	}
	public void test(){
		Gan g = new Gan();
		g.show();
	}
}

5.局部内部类
1、局部内部类:定义在方法中的内部类
2、局部内部类的访问说明:
方法中的局部变量,外界都没有办法访问到
所以方法中定义的内部类,外界也没有办法访问到
3、解决方式:
在方法内部,就创建局部内部类的对象,调用对象的方法
外界调用局部内部类所在的方法,间接的创建局部内部类的对象,间接的访问局部内部类的方法
代码示例

public static void main(String[] args) {
		//局部内部类
		breath();
	}

	public static void breath(){
		int age = 10;
		//内部类
		class Lung{
			String color = "black";

			public void show(){
				System.out.println(age + "..." +color + "少抽点烟吧,我都黑了");
			}
		}
		//在方法中创建对象,调用自己的方法,和属性
		Lung f = new Lung();
		f.show();
	}

6.匿名内部类
1、没有名字的内部类
2、匿名内部类的使用前提:
匿名类:继承一个类
匿名类:实现一个接口
3、格式:
new 父类类名或者接口名() {
父类方法的重写或者是接口内容的实现
}
4、本质:创建了一个类的子类对象、接口的实现类对象
5、内部类的名称总结:
1、如果是有名字的内部类,类名【外部类名$内部类名】
2、如果是没有名字的内部类,通过匿名内部类的顺序描述类名,第一个匿名内部类的名称【外部类名$1】,第二个匿名内部类类名【外部类名$2】
代码示例

	public static void main(String[] args) {
		//匿名内部类
		Person p = new Student();
		p.run();

		Person p1 = new Person(){
			@Override
			public void run(){
				System.out.println("");
			}
		
		};
		p1.run();
		//接口中的匿名内部类使用
		Play pl = new Play(){
			@Override
			public void play(){
				System.out.println("我要踢足球");
			}
		
		};
		pl.play();
		//匿名内部类的方法调用
		new Play(){
			@Override
			public void play(){
				System.out.println("我要打篮球");
			}
		}.play();
		//new Student().方法名();
	}

abstract class Person {

	public abstract void run();
}

class Student extends Person{
	int age;
	public void run(){
		System.out.println("我要在跑步机上跑步");
	}
}

interface Play{

	public abstract void  play();
}
二、包

1.包的概述
1、包:用于分类存放类文件(.class)的文件夹
2、作用:
1、分类存放类文件
2、在不同的包中,可以起相同的类名(可以根据包名区分)
3、命名:
域名倒着写:com.ujiuye.demos(全球唯一)
4、包的声明:
使用package的关键字,声明当前的类是属于指定的包的
5、效果:
1、编译的这个类,就会进入到一个指定的文件夹中
2、当前的类,名称也发生了变化,类名变成了【包名 + 类名】
6、运行:
1、包文件夹以外,无法直接访问到这个类了
2、进入到包文件夹中,仍然无法访问到这个类:无论写类名还是全类名都无法找到这个类
3、【解决】在包文件夹所在的目录,运行这个类的全类名
7、访问:
在其他类中访问带包的类的时候,需要使用那个类的全类名:包名+类名
8、简化:
每次使用其他包的类的时候,都需要写很长一串全类名,所以非常麻烦,需要简化
使用import语句进行简化,在类的声明上,写一个import语句,将这个类的全类名导入进来,在该类中,就可以直接使用这个类的简写形式了。
注意事项:
1、即使在一个包中,有好多类都要使用,也不建议使用import *
2、如果在一个文件中,需要使用两个包中的同名类,那么不建议用import语句导包
否则无法区分使用的是哪个包中的类

2.权限修饰符
1、就是一些关键字,修饰成员,用于决定这些成员可以在什么位置被访问
2、这些关键字都是“封装”的体现形式
3、权限修饰符:
private: 只能在本类中被访问

默认的权限修饰符(啥都不写):	可以在本类中被访问

也可以在本包中的其他类中 被访问

protected:						可以在本类中被访问
 	 	 	 	 	 	 	 	也可以在本包中的其他类中被访问
 	 	 	 	 	 	 	 	可以在其他包的子类中被【继承】

public						:	能在本类中被访问
 	 	 	 	 	 	  	 	能在本包中的其他类中被访问
 	 	 	 	 	 	 	 	能在其他包中的子类中被访问
 	 	 	 	 	 	 	 	能在其他包的无关类中被访问
三、iDea的快捷键

Ctrl+Shift + Enter,语句完成
Ctrl+E,最近的文件
Ctrl+F12,可以显示当前文件的结构
Ctrl+F7,可以查询当前元素在当前文件中的引用,然后按 F3 可以选择
Ctrl+N,可以快速打开类
Ctrl+Shift+N,可以快速打开文件
Alt+Q,可以看到当前方法的声明
Ctrl+P,可以显示参数信息
Ctrl+Shift+Insert,可以选择剪贴板内容并插入
Alt+Insert,可以生成构造器/Getter/Setter等
Ctrl+Alt+V,可以引入变量。例如:new String(); 自动导入变量定义
Ctrl+Alt+T,可以把代码包在一个块内,例如:try/catch
Ctrl+Enter,导入包,自动修正
Ctrl+Alt+L,格式化代码
Ctrl+Alt+I,将选中的代码进行自动缩进编排,这个功能在编辑 JSP 文件时也可以工作
Ctrl+Alt+O,优化导入的类和包
Ctrl+R,替换文本
Ctrl+F,查找文本
Ctrl+Shift+Space,自动补全代码
Ctrl+空格,代码提示(与系统输入法快捷键冲突)
Ctrl+Shift+Alt+N,查找类中的方法或变量
Alt+Shift+C,最近的更改
Alt+Shift+Up/Down,上/下移一行
Shift+F6,重构 – 重命名
Ctrl+X,删除行
Ctrl+D,复制行
Ctrl+/或Ctrl+Shift+/,注释(//或者/**/)
Ctrl+J,自动代码(例如:serr)
Ctrl+Alt+J,用动态模板环绕
Ctrl+H,显示类结构图(类的继承层次)
Ctrl+Q,显示注释文档
Alt+F1,查找代码所在位置
Alt+1,快速打开或隐藏工程面板
Ctrl+Alt+left/right,返回至上次浏览的位置
Alt+left/right,切换代码视图
Alt+Up/Down,在方法间快速移动定位
Ctrl+Shift+Up/Down,向上/下移动语句
F2 或 Shift+F2,高亮错误或警告快速定位
Tab,代码标签输入完成后,按 Tab,生成代码
Ctrl+Shift+F7,高亮显示所有该文本,按 Esc 高亮消失
Alt+F3,逐个往下查找相同文本,并高亮显示
Ctrl+Up/Down,光标中转到第一行或最后一行下
Ctrl+B/Ctrl+Click,快速打开光标处的类或方法(跳转到定义处)
Ctrl+Alt+B,跳转到方法实现处
Ctrl+Shift+Backspace,跳转到上次编辑的地方
Ctrl+O,重写方法
Ctrl+Alt+Space,类名自动完成
Ctrl+Alt+Up/Down,快速跳转搜索结果
Ctrl+Shift+J,整合两行
Alt+F8,计算变量值
Ctrl+Shift+V,可以将最近使用的剪贴板内容选择插入到文本
Ctrl+Alt+Shift+V,简单粘贴
Shift+Esc,不仅可以把焦点移到编辑器上,而且还可以隐藏当前(或最后活动的)工具窗口
F12,把焦点从编辑器移到最近使用的工具窗口
Shift+F1,要打开编辑器光标字符处使用的类或者方法 Java 文档的浏览器
Ctrl+W,可以选择单词继而语句继而行继而函数
Ctrl+Shift+W,取消选择光标所在词
Alt+F7,查找整个工程中使用地某一个类、方法或者变量的位置
Ctrl+I,实现方法
Ctrl+Shift+U,大小写转化
Ctrl+Y,删除当前行

Ctrl+Shift+F,全局查找
Ctrl+F,查找/Shift+F3,向上查找/F3,向下查找
Ctrl+Shift+S,高级搜索
Ctrl+U,转到父类
Ctrl+Alt+S,打开设置对话框
Alt+Shift+Inert,开启/关闭列选择模式
Ctrl+Alt+Shift+S,打开当前项目/模块属性
Ctrl+G,定位行
Alt+Home,跳转到导航栏
Ctrl+Backspace,按单词删除
【调试部分、编译】
Ctrl+F2,停止
Alt+Shift+F9,选择 Debug
Alt+Shift+F10,选择 Run
Ctrl+Shift+F9,编译
Ctrl+Shift+F10,运行
Ctrl+Shift+F8,查看断点
F8,步过
F7,步入
Shift+F7,智能步入
Shift+F8,步出
Alt+Shift+F8,强制步过
Alt+Shift+F7,强制步入
Alt+F9,运行至光标处
Ctrl+Alt+F9,强制运行至光标处
F9,恢复程序
Alt+F10,定位到断点
Ctrl+F8,切换行断点
Ctrl+F9,生成项目
Alt+1,项目
Alt+2,收藏
Alt+6,TODO
Alt+7,结构
Ctrl+Shift+C,复制路径
Ctrl+Alt+Shift+C,复制引用,必须选择类名
Ctrl+Alt+Y,同步
Ctrl+~,快速切换方案(界面外观、代码风格、快捷键映射等菜单)
Shift+F12,还原默认布局
Ctrl+Shift+F12,隐藏/恢复所有窗口
Ctrl+F4,关闭
Ctrl+Shift+F4,关闭活动选项卡
Ctrl+Tab,转到下一个拆分器
Ctrl+Shift+Tab,转到上一个拆分器
【重构】
Ctrl+Alt+Shift+T,弹出重构菜单
Shift+F6,重命名
F6,移动
F5,复制
Alt+Delete,安全删除
Ctrl+Alt+N,内联
【查找】
Ctrl+F,查找
Ctrl+R,替换
F3,查找下一个
Shift+F3,查找上一个
Ctrl+Shift+F,在路径中查找
Ctrl+Shift+R,在路径中替换
Ctrl+Shift+S,搜索结构
Ctrl+Shift+M,替换结构
Alt+F7,查找用法
Ctrl+Alt+F7,显示用法
Ctrl+F7,在文件中查找用法
Ctrl+Shift+F7,在文件中高亮显示用法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值