面向对象(oop) |
笔记Notes |
|
拓展 |
快捷键:选择代码进入的循环体 Ctrl+Alt+T
idea创建主函数快捷:psvm ; 输出快捷:sout Ctrl + D IDEA快捷键:复制当前行到下一行 alt + 回车 自动查报错信息 alt+insert idea自动插入一些类,比如getset等 Ctrl+h 查看类的树 ctrl+shift+alt:多行操作 psvm:生成main()方法; fori:生成for循环; Ctrl+Alt+v:自动补齐返回值类型 ctrl+o:覆写方法 ctrl+i:实现接口中的方法 ctrl+shift+u:大小写转换 CTRL+SHIFT+Z:取消撤销 Alt+Insert:生成构造方法、getter、setterctrl+y:删除当前行 Ctrl+Shift+J:将选中的行合并成一行 ctrl+g:定位到某一行 Ctrl+Shitft+向下箭头:将光标所在的代码块向下整体移动 Ctrl+Shift+向上箭头:将光标所在的代码块向上整体移动 Alt+Shift+向下箭头:将行向下移动Alt+Shift+向上箭头:将行向上移动Ctrl+F:在当前文件中查找Ctrl+R:替换字符串Ctrl+Shift+F:在全局文件中查找字符串Ctrl+Shift+R:在全局中替换字符串Ctrl+Shift+Enter:自动补齐{}或者分号;Shift+Enter:在当前行的下方开始新行Ctrl+Alt+Enter:在当前行的上方插入新行Ctrl+Delete:删除光标所在至单词结尾处的所有字符 |
重载,继承,重写,多态的区别 继承:当多个类具有相同bai的特征(属性)和行为(方法),为了实现代码复用,需要子类继承父类的特征和行为。使得子类具有父类的各种属性和方法,除了具有父类的特征和行为,还具有一些自己特殊的特征和行为。 多态:当一个类需要表现出多种形态,具有多种实现方式。避免了在父类里大量重载引起代码臃肿且难于维护,增强程序的可扩展性及可维护性,使代码更加简洁。子类重写父类的方法。使子类具有不同的方法实现。 可以简单理解为:继承是子类使用父类的方法,而多态则是父类使用子类的方法。 重写:如果在子类中定义的一个方法,其名称、返回类型及参数列表正好与父类中某个方法的名称、返回类型及参数列表相匹配,那么可以说,子类的方法重写了父类的方法。 重载:多个同名而不同参数的方法之间,互相称之为重载方法。 接口:接口把方法的特征和实现分割开来。它本身没有任何实现,不涉及表象,只描述public行为,所以接口比抽象类更抽象化。但是接口不是类,所以不能被实例化。 下列测试代码: package cn.lufice.test02; public class Instrument { public void play(int i){ System.out.println("Instrument"+i); } //重载 public void play( int i,String str){ System.out.println("Brass "+i+" "+str); } } public class Brass extends Instrument { public void play( int i,String str){ System.out.println("Brass "+i+" "+str); } } public class Wind extends Instrument{ //重写 public void play(int i){ System.out.println("Wind "+i); } public static void main(String[] args) { Instrument instrument = new Wind();//多态 Brass brass = new Brass();//继承 instrument.play(10); brass.play(20,"barss"); } } /*Output: Wind 10 Brass 20 barss */ |
重载与重写联系 重载(Overloading)
重载发生在本类,方法名相同,参数列表不同,与返回值无关,只和方法名,参数列表,参数的类型有关.
重载(Overload):首先是位于一个类之中或者其子类中,具有相同的方法名,但是方法的参数不同,返回值类型可以相同也可以不同。
(1):方法名必须相同
(2):方法的参数列表一定不一样。
(3):访问修饰符和返回值类型可以相同也可以不同。
其实简单而言:重载就是对于不同的情况写不同的方法。 比如,同一个类中,写不同的构造函数用于初始化不同的参数。
重写(Overriding)
重写发生在父类子类之间,比如所有类都是继承与Object类的,Object类中本身就有equals,hashcode,toString方法等.在任意子类中定义了重名和同样的参数列表就构成方法重写.
重写(override):一般都是表示子类和父类之间的关系,其主要的特征是:方法名相同,参数相同,但是具体的实现不同。
重写的特征:
(1):方法名必须相同,返回值类型必须相同
(2):参数列表必须相同
(3):访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。
(4):子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。
(5):构造方法不能被重写,
简单而言:就是具体的实现类对于父类的该方法实现不满意,需要自己在写一个满足于自己要求的方法。 |
new 创建一个对象的过程 对于用new 创建一个对象,我们需要弄清楚它的过程: 引用和创建一个对象的格式是:
类名 变量名;
变量名=new 类名(参数列表);
比如 Vehicle veh1=new Vehicle();
这个语句具体的执行过程是:
1.右边的“new vheicle"是以vehicle类为模板,在堆空间里创建一个vehicle类对象(也简称vehicle对象)。
2.末尾的()意味着,在对象创建后,立即调用vehicle类的构造函数,对刚生成的对象进行初始化。构造函数肯定是有的,如果没有创建,java会补上一个默认的构造函数。
3.左边的'Vehicle veh1'创建了一个vehicle类引用变量
4.“=”操作符使对象引用指向刚创建的Vehicle对象。
将上面的语句分为两个步骤:
Vechicle veh1;
veh1=new Vechicle;
这样写,就比较清楚了,有两个实体:一是对象引用变量,一是对象本身。在堆空间里创建的实体,与在栈空间里创建的实体不同。尽管它们也是确确实实存在的实体,但是似乎很难准确的“抓”住它。 |
|
接口多继承 接口定义 |