第三周学习总结eclipse使用,面想对象中继承,多态学习 抽象类 ,接口内部类的了解与学习。Object中几种常用类学习了解。

第三周学习总结

一 学习使用eclipse

1 eclipse常用快捷键以及解释

Ctrl+1 快速修复(最经典的快捷键,就不用多说了)
Ctrl+D: 删除当前行
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交互位置(同上)
Alt+← 前一个编辑的页面
Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)
Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性
Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)
Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)
Ctrl+M 最大化当前的Edit或View (再按则反之)
Ctrl+/ 注释当前行,再按则取消注释
Ctrl+O 快速显示 OutLine
Ctrl+T 快速显示当前类的继承结构
Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一个
Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)
Ctrl+/(小键盘) 折叠当前类中的所有代码
Ctrl+×(小键盘) 展开当前类中的所有代码
Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)
Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)
Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)
Ctrl+Shift+F4 关闭所有打开的Editer
Ctrl+Shift+X 把当前选中的文本全部变味小写
Ctrl+Shift+Y 把当前选中的文本全部变为小写
Ctrl+Shift+F 格式化当前代码
Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)

下面的快捷键是重构里面常用的.(注:一般重构的快捷键都是Alt+Shift开头的了)
Alt+Shift+R 重命名 (尤其是变量和类的Rename,比手工方法能节省很多劳动力)
Alt+Shift+M 抽取方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)
Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)
Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)
Alt+Shift+F 把Class中的local变量变为field变量 (比较实用的功能)
Alt+Shift+I 合并变量(可能这样说有点不妥Inline)
Alt+Shift+V 移动函数和变量(不怎么常用)
Alt+Shift+Z 重构的后悔药(Undo)

编辑
作用域 功能 快捷键
全局 查找并替换 Ctrl+F
文本编辑器 查找上一个 Ctrl+Shift+K
文本编辑器 查找下一个 Ctrl+K
全局 撤销 Ctrl+Z
全局 复制 Ctrl+C
全局 恢复上一个选择 Alt+Shift+↓
全局 剪切 Ctrl+X
全局 快速修正 Ctrl1+1
全局 内容辅助 Alt+/
全局 全部选中 Ctrl+A
全局 删除 Delete
全局 上下文信息 Alt+?
Alt+Shift+?
Ctrl+Shift+Space
Java编辑器 显示工具提示描述 F2
Java编辑器 选择封装元素 Alt+Shift+↑
Java编辑器 选择上一个元素 Alt+Shift+←
Java编辑器 选择下一个元素 Alt+Shift+→
文本编辑器 增量查找 Ctrl+J
文本编辑器 增量逆向查找 Ctrl+Shift+J
全局 粘贴 Ctrl+V
全局 重做 Ctrl+Y

查看
作用域 功能 快捷键
全局 放大 Ctrl+=
全局 缩小 Ctrl±

窗口
作用域 功能 快捷键
全局 激活编辑器 F12
全局 切换编辑器 Ctrl+Shift+W
全局 上一个编辑器 Ctrl+Shift+F6
全局 上一个视图 Ctrl+Shift+F7
全局 上一个透视图 Ctrl+Shift+F8
全局 下一个编辑器 Ctrl+F6
全局 下一个视图 Ctrl+F7
全局 下一个透视图 Ctrl+F8
文本编辑器 显示标尺上下文菜单 Ctrl+W
全局 显示视图菜单 Ctrl+F10
全局 显示系统菜单 Alt±

导航
作用域 功能 快捷键
Java编辑器 打开结构 Ctrl+F3
全局 打开类型 Ctrl+Shift+T
全局 打开类型层次结构 F4
全局 打开声明 F3
全局 打开外部javadoc Shift+F2
全局 打开资源 Ctrl+Shift+R
全局 后退历史记录 Alt+←
全局 前进历史记录 Alt+→
全局 上一个 Ctrl+,
全局 下一个 Ctrl+.
Java编辑器 显示大纲 Ctrl+O
全局 在层次结构中打开类型 Ctrl+Shift+H
全局 转至匹配的括号 Ctrl+Shift+P
全局 转至上一个编辑位置 Ctrl+Q
Java编辑器 转至上一个成员 Ctrl+Shift+↑
Java编辑器 转至下一个成员 Ctrl+Shift+↓
文本编辑器 转至行 Ctrl+L

搜索
作用域 功能 快捷键
全局 出现在文件中 Ctrl+Shift+U
全局 打开搜索对话框 Ctrl+H
全局 工作区中的声明 Ctrl+G
全局 工作区中的引用 Ctrl+Shift+G

文本编辑
作用域 功能 快捷键
文本编辑器 改写切换 Insert
文本编辑器 上滚行 Ctrl+↑
文本编辑器 下滚行 Ctrl+↓

文件
作用域 功能 快捷键
全局 保存 Ctrl+X
Ctrl+S
全局 打印 Ctrl+P
全局 关闭 Ctrl+F4
全局 全部保存 Ctrl+Shift+S
全局 全部关闭 Ctrl+Shift+F4
全局 属性 Alt+Enter
全局 新建 Ctrl+N

项目
作用域 功能 快捷键
全局 全部构建 Ctrl+B

源代码
作用域 功能 快捷键
Java编辑器 格式化 Ctrl+Shift+F
Java编辑器 取消注释 Ctrl+\
Java编辑器 注释 Ctrl+/
Java编辑器 添加导入 Ctrl+Shift+M
Java编辑器 组织导入 Ctrl+Shift+O
Java编辑器 使用try/catch块来包围 未设置,太常用了,所以在这里列出,建议自己设置。
也可以使用Ctrl+1自动修正。

运行
作用域 功能 快捷键
全局 单步返回 F7
全局 单步跳过 F6
全局 单步跳入 F5
全局 单步跳入选择 Ctrl+F5
全局 调试上次启动 F11
全局 继续 F8
全局 使用过滤器单步执行 Shift+F5
全局 添加/去除断点 Ctrl+Shift+B
全局 显示 Ctrl+D
全局 运行上次启动 Ctrl+F11
全局 运行至行 Ctrl+R
全局 执行 Ctrl+U

重构
作用域 功能 快捷键
全局 撤销重构 Alt+Shift+Z
全局 抽取方法 Alt+Shift+M
全局 抽取局部变量 Alt+Shift+L
全局 内联 Alt+Shift+I
全局 移动 Alt+Shift+V
全局 重命名 Alt+Shift+R
全局 重做 Alt+Shift+Y

二 面向对象 之 继承

继承:

需要定义独立的类,将其他类的共性内容抽取到该独立的类中,让其他类和这个独立类的产生一种关系: "继承"关系。

1 继承的好处

1)提供了代码的复用性 (代码结构清晰)

2)提供了了代码的维护性

3)类和类产生的这种"继承关系",是多态的前提条件

继承的关系也是一种弊端,类和类产生,耦合性就增强了

开发的原则:Java很多的开发原则都要遵循下面这个:

低耦合,高内聚

2 继承的特点

1)在Java语言中,类和类之间只支持单继承,不支持多继承

在其他语言中,是支持多继承的,语法格式:子类名 extends 父类名1,父类名2{}

2)虽然不支持多继承,但是类与类之间是可以多层继承的!

举例简单说明继承:

//定义一个人类

class Person{
   
	//有两个成员方法
	//公共的成员方法
	public void eat() {
   
		System.out.println("饿了就需要吃饭");
	}
	public void sleep() {
   
		System.out.println("困了就需要睡觉");
	}
	
}
//学生类
class Student extends Person{
   
}

//  extend  连接 person类  继承了他的成员方法
//测试类
public class ExtendsDemo1 {
   
	
public static void main(String[] args) {
   
	//继承之前的测试
	Student s = new Student() ;
	s.eat();
	s.sleep();
	System.out.println("----------------------------");
	Student s2 = new Student() ;
	s2.eat();
	s2.sleep();
}	
}
3 继承的注意事项

继承中的注意事项:

1)子类继承父类,可以继承父类中所有的非私有的成员!本身私有的成员变量/成员方法只能在本类中访问,外界不能访问的!,

但是间接通过公共的访问方法来访问

2)子类继承父类,不继承父类构造方法,但是可以通过一个关键字来访问父类的构造方法

3)不要为了使用部分功能而去使用继承!

继承体现的是一种“is a”的关系,如果a类是b类的一中,使用继承关系

4 继承中的成员关系
4.1成员变量

成员变量:

子类继承父类,如果子类中的成员变量名称和父类的成员变量名称不一致的情况:(比较简单)分别访问即可!

子类继承父类,如果子类中的成员变量名称和父类的成员变量名称一致的情况

执行流程:

1)现在子类的局部位置中找,如果找到了就使用它

2)如果局部位置中没有,在子类的成员位置中找,如果找到了,就使用!

3)如果找不到,就在父类的成员位置中找,如果找到了,就使用

4)如果还找不到,就报错了,说明访问了一个不存在的变量!

遵循就近原则。

4. 2构造方法

子类是不能继承父类的构造方法的,但是可以通过super()来访问父类的构造方法:

4.2.1在继承中,子类中所有的构造方法都默认访问父类的无参构造方法;

4.2.2因为可能要用到父类中的数据,所以先让父类中的数据进行初始化(构造方法),父类的初始化完毕,然后才执行子类的构造方法(子类数据初始化)所以都是先执行父类的无参构造方法。如果在子类的构造方法显示给出了,必须写在第一句,否则可能出现父类的初始化多次。

4.2.3

问题:如果父类的无参构造方法没有提供,那么子类构造会出现什么情况?

子类的所有构造方法默认父类的无参构造方法,父类如果没有提供,就报错了!

如何解决呢?

1)手动给出父类的无参构造方法 (之前说在写一个标准类的时候,建议永远给出无参构造方法)

2)现在手动不提供无参构造方法,如何解决?

2.1)间接的通过super(xxx)来访问父类的有参构造初始化!

2.2)通过this(),访问本类(子类)的无参构造方法,然后在通过子类的无参构造方法里面super(xxx)间接访问父类的有参;

根据上面的总结:

子类中的所有构造方法里面某一个构造方法必须让父类初始化,super(xx),this(),全都是在构造方法中的第一句!

经典案例:

猫狗案例

猫狗案例—继承版

猫类

属性:姓名,年龄,毛色

行为:吃,睡,特有功能:抓老鼠

狗类

属性:姓名,年龄,毛色

行为:吃,睡,特有功能:看门

由于存在共性内容,将共性内容抽取到一个独立的类中

Animal类 ----> 父类

属性:姓名,年龄,毛色

行为:吃,睡 ,提供公共访问的成员方法

public class Animal{
   
    String name;
    int age;
    String color;
    public class Animal{
   
	//属性私有化
	private String name ;
	private int age ;
	private String color ;
	//无参构造方法:
	public Animal() {
   
		super();
	}
	//有参构造方法:
	public Animal(String name, int age, String color) {
    //"tom",3,"黄色"
		super();
		this.name = name;   
		this.age = age;
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值