- 面向对象编程(OOP:Object-OrientedProgramming)
- 回顾方法的调用
- 构造器(必须掌握)
- 面向对象三大特性
- 封装
- 继承
- 多态
- 方法重写:重点
- 多态
- instanceof(类型转换) 引用类型
- Static关键字(总结)
- 抽象类
- 接口
- 内部类(各种套娃。。。)
- 异常机制
- 捕获和抛出异常
- 异常处理机制
- 自定义异常
面向对象编程(OOP:Object-OrientedProgramming)
个人理解:就是把复杂的问题看作一个整体,即对象;然后再去面向过程,在对象里面去实现方法,语句啥的。
面向对象的本质就是:以类的方式组织代码,以对象的方式组织(封装)数据。
从代码运行的角度考虑是先有类后有对象。类是对象的模板。
个人理解:在编程过程中,一定是先创建一个类,然后就可以用类去创建很多个对象!妙啊!!
break和return的区别:break:跳出switch,结束循环;return结束方法,返回一个结果。
回顾方法的调用
区分:
- 静态方法的调用:有static关键字的方法,可以直接用类去点方法名;
- 非静态方法的调用:没有static关键字的方法,需要先将类实例化(比如:Student student = new Student();),然后再去点方法名(比如:student.方法名();)
- 静态方法可以调用静态方法,非静态方法不可以调用静态方法
构造器(必须掌握)
Alt + Insert 快捷键,生成有参函数无参函数
默认存在一个无参构造方法,生成一个有参构造方法之后,默认存在的无参构造方法就没了,需要重新手动去生成它。
面向对象三大特性
封装
- 程序设计追求"高内聚,低耦合";高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合就是仅暴露少量的方法给外部使用。
- 封装(数据的隐藏):通常应该禁止直接访问一个对象中数据的实际表示,而应该通过操作接口来访问,这称为信息隐藏!
- 记者这句话就够了:属性我私有(private),get/set
继承
多态
super和 this:
方法重写:重点
重写都是方法的重写,和属性无关
因为:定义的是什么类,就调用什么类的静态方法
快捷键:Alt + Insert ----->选择Override Methods...
多态
static final private 这些修饰符修饰的方法没有多态,因为它们重写都不能被重写,更别谈多态了啊!!!
个人理解:当父类引用指向子类对象时:
- 当某一个方法,在父类和子类中都存在,如果此时用父类创建的对于像去点这个方法,那么执行的就是子类中的方法;(执行的是子类对父类中的方法重写之后的同名方法);
- 当子类中有一个独有的方法,父类中并不存在同名的方法,如果此时用父类创建的对于像去点这个方法,那么就会报错
instanceof(类型转换) 引用类型
个人理解:
我们学这里的类型转换,是为了在父子继承中,去使用子类中特有的方法,而不是重写的方法;
(其实就是父类不能直接使用子类中特有的方法,所以强转一下,把自己伪装成子类,然后就可以去使用子类中的方法了,哈哈,妙啊!😄😄😄😄😄😄😄😄😄😄😄😄)
借鉴评论大神理解:
低(子类)转高(父类)时,由于子类已经继承了父类的所有方法了,所以只需要删除子类中自己独有的一些方法,自然而然就转换成父类了;
而父类转换为子类,就需要重新去开辟出属于子类的空间,则需要强制转换!妙极啊!👍👍👍👍👍👍👍👍👍👍👍👍
Static关键字(总结)
在类中,类( 或者静态的方法)可以去直接访问静态的方法(或静态变量),但是不能访问非静态的方法(或非静态变量)(类也不能去访问非静态的方法(或非静态变量));
而非静态的方法却可以直接访问静态方法,这是为什么呢?
因为在类加载的过程中,静态方法、静态变量以及常量也被存入了方法区,或者说类加载的同时,静态方法、静态变量以及常量是一起被加载的。所以就可以直接调用了,像非静态的方法还没被加载进内存,所以就不能去访问非静态的方法。
抽象类
抽象类的所有方法必须要由它的子类去实现,但是假如它的子类也是一个抽象类,那就要由它子类的子类去实现它的方法了。以此类推...
个人理解:就是无限套娃。。。
Java里,extends是单继承,类没有多继承,但是接口有多继承
接口
接口必须要有实现类
内部类(各种套娃。。。)
异常机制
捕获和抛出异常
异常处理机制
异常处理的五个关键字:
- try
- catch
- finally
- throw
- throws
public class Test { public static void main(String[] args) { int a = 1; int b = 0; //假如要捕获多个异常,要按照捕获范围,从小到大 try {//try监控区域 System.out.println(a/b);//捕获到一个异常后就直接跳出监控区域,即下面一行代码不执行了 new Test().a(); }catch (ArithmeticException e){ //捕获到异常之后,执行下面的代码 System.out.println("程序出现异常,除法分母不能为零(ArithmeticException)"); }catch (Exception e){ //捕获到异常之后,执行下面的代码 System.out.println("Exception"); }catch (Error e){ //捕获到异常之后,执行下面的代码 System.out.println("Error"); }catch (Throwable e){ //捕获到异常之后,执行下面的代码 System.out.println("Throwable"); }finally {//最后必定执行的语句,可以不要finally,try和catch一定要 System.out.println("finally"); } } public void a(){b();} public void b(){a();}}
idea中捕获抛出异常的快捷键是:Ctrl + Alt + T------------>由于我的笔记本可能键位冲突,所以我自己改成了Alt + T;(针对跟我一样快捷键没反应的情况)
假如在方法中,处理不了某个异常,就可以主动抛出异常,用throw
public class Test { public static void main(String[] args) { int a = 1; int b = 0; new Test().test(a,b); // } //假设这个方法中,处理不了这个异常 public void test(int a,int b){ if (b==0){ throw new ArithmeticException();//一般在方法中,去主动抛出异常 } }}
如果用try catch ,那么程序抛出异常后可以继续运行,但是如果用throw抛出异常,程序就会停止运行。
自定义异常
public class MyException extends Exception{ private int detail; public MyException(int a) { this.detail = a; } //toString():异常的打印信息 @Override public String toString() { return "MyException{" + "detail=" + detail + '}'; }}
public class Test { //可能会存在异常的方法 static void test(int a) throws MyException {//在这里,我选择了抛出这个异常(throws MyException) System.out.println("传递的参数为:" + a); if (a > 10) { throw new MyException(a);//在这里,我选择了抛出这个异常(throws MyException),抛到更高的地方,让调用这个test方法的人来捕获这个异常,当然也可以选择直接在这里try/catch捕获它 } System.out.println("OK!"); } public static void main(String[] args) { try { test(11); } catch (MyException e) { System.out.println("MyException---->"+e); } }}
原文转载:http://www.shaoqun.com/a/676730.html
雨果:https://www.ikjzd.com/w/1307
锦桥纺织网:https://www.ikjzd.com/w/2469
目录面向对象编程(OOP:Object-OrientedProgramming)回顾方法的调用构造器(必须掌握)面向对象三大特性封装继承多态方法重写:重点多态instanceof(类型转换)引用类型Static关键字(总结)抽象类接口内部类(各种套娃。。。)异常机制捕获和抛出异常异常处理机制自定义异常面向对象编程(OOP:Object-OrientedProgramming)个人理解:就是把复杂的
慧聪集团:https://www.ikjzd.com/w/1836
淘粉吧:https://www.ikjzd.com/w/1725
aicpa:https://www.ikjzd.com/w/1373
老公在家假装性无能 跑去和闺蜜偷睡:http://lady.shaoqun.com/m/a/271697.html
跨境电商ERP该如何选择,可以根据哪些维度来考虑?:https://www.ikjzd.com/home/19274
在侧所干了朋友的妻子 嗯啊,人妻口述与情趣店的老板上演激情大战:http://lady.shaoqun.com/a/274033.html
No comments:
Post a Comment