第Ⅱ期Android菜鸟饭团#Java学习#第五课 活动笔记 一、面向对象的设计思想 - 我要去新疆,如果是面向过程的设计思想就需要考虑每一个细节比如我开车,我挂档,我踩油门,我过河,我过陕西,面向对象只需要将这些细节封装起来,人只需要发出一个指令就可以实现这一系列的步骤
- 类是描述一类对象的一个抽象的概念类中定义了这一类对象的属性和方法,对象和对象之间的属性一般是有区别的
- 对象是类的一个具体实例
二、类(对象)对象之间的关系 - 关联关系:一种简单的关系,两个类之间有关系就可以成为关联关系
- 继承关系:一个大的类包含一个小的类,小的类中有大的类的属性和方法。一般表示为XX是一种XX即可表示为继承关系,一个类不止可以继承一个类,可以同时继承多个类
- 聚合关系:两个类之间一个为整体一个为部分称为聚合关系。聚合关系分为聚集关系和组合关系,聚集关系之间的联系不是密不可分的,而组合关系之间缺一不可
- 实现关系:对于从同一个类之间衍生出不同的类之间有着不同的方法用来实现某些功能
- 设计思路:写JAVA之前首先考虑有哪些类和对象,在考虑类里有哪些属性和方法,再考虑这些类之间的关系
三、为什么使用对象 - 对象更符合对于现实问题的抽象
- 通过继承可以复用,通过聚合可以复用
四.异常分类: - 运行时异常:程序运行阶段,捕获,编译阶段可以不用处理
- 非运行时异常(编译时异常):编译阶段没有处理,编译器会给出错误提示
处理异常的方式: - try{ } catch(Exception){ } 处理
- 将异常向后抛: throws exp1,exp2
- 手动引发异常:throw
- 用法:throw new Exception();throw异常对象;
- 自定义异常:继承自Exception
【return的用法】:
publicclass Foo{ public static void main(String args[]){ try{return;} finally{System.out.println("Finally");} } } |
What is the result? A. print out nothing B. print out "Finally" C. compile error Answer:B Java的finally块会在return之前执行,无论是否抛出异常且一定执行.
publicclass Test{ public static String output=""; public static void foo(int i){ try { if(i==1){ throw new Exception(); } output +="1"; } catch(Exception e){ output+="2"; return; } finally{ output+="3"; } output+="4"; } public static void main(String args[]){ foo(0); foo(1); // 24) } } |
Whatis the value of output at line 24? Answer:13423如果你想出的答案是134234,那么说明对return的理解有了混淆,return是强制函数返回,本题就是针对foo(),那么当执行到return的话,output+="4";就不再执行了,这个函数就算结束了.
五.面向对象三大特征:封装性, 继承性,多态性 - 类和对象的关系:类是对象的抽象描述。对象是类的实例。
- 一个类中包含属性和方法。
在Java语言中,编译器为所有的Java程序自动导入包“java.lang”,因此Java程序可以直接用“java.lang”中的类和接口。位于类继承关系层次结构树的根部的类Object就是在包“java.lang”中的一个类。
public:入口类:类名必须和文件名相同; 【注意】一个java源文件中只能有一个入口类。 公有类:此类可以被跨包访问。 default:默认(即class关键字前什么都不写),此类只能在本包中使用。 abstract: 抽象类 final: 最终类,此类不能被其它类继承。
public: 公共的,在所有类中都可以使用 default: 只有本包中的类可以使用 protected: 本包中的类和其他包中此类的子类都可以使用 private: 只在当前类中使用 【注意】一般情况下,属性的访问限定符用private(私有),实现信息隐藏。 final: 定义属性为常量,只能初始化一次,以后其值不能被修改。 static:静态变量,静态属性(类属性): 此属性被所有对象共享,在内存中只分配一次空间。 【使用方式】:对象名.属性名 或 类名.属性名 【注意】对于 非静态变量(即实例属性):每个对象都各自分配空间、赋值。 transient:暂时性变量,对象序列化 volatile:用于并发线程共享(了解)
public: 所有类可以使用 default: 本包中使用 protected: 本包中和其他包中此类的子类可以使用 private: 在当前类中使用
【注意】: 一般情况下,成员方法的访问限定符用public(公共的),供外部使用 final: 最终方法,此方法不能被子类重写(覆盖),但可重载 static: 静态方法(类方法) 【调用方式】:对象.方法名 或 类名.方法名 synchronized: 线程安全的 abstract: 抽象方法 native:此方法中可以使用其他如c/c++语言来实现一些底层操作
六、类的实例化 - 构造方法在创建新的实例对象时起作用
- 构造方法通常用来初始化实例对象,例如: 初始化成员域或设置工作环境
- 可以含有多种构造方法(重载),但必须具有不同的参数列表
- 与类同名
- 没有返回值,不能加void
- 通过new 关键字调用
- 果没有显式地定义类的构造方法,则系统会为该类定义一个默认的构造方法。该构造方法不含任何参数。
- 格式为:类名( ){ }
- 初始化的默认值: 基本数值类型: 0; boolean: false; 引用数据类型: null
- 一旦在类中定义了带参的构造方法,系统就不会再创建这个默认无参的构造方法 了。所以如果程序中用到此构造方法的话,必须自己定义上。
- 调用顺序:先调用父类的构造方法,再调用自身的构造方法
- 继承性:extends : 子类可以直接使用父类的所有的非私有(private)的属性和方
- 继承的优点:提高代码的复用率,精简代码
- Java中只有单继承:即每个类只能有一个父类
- this: 指当前对象
- super: 指当前对象的父类。 用于调用父类的构造方法
(1).public:最大访问控制权限,对所有的类都可见。 (2).protect:同一包可见,不在同一个包的所有子类也可见。 (3).default:包访问权限,即同一个包中的类可以可见。默认不显式指定访问控制权限时就是default包访问控制权限。 (4).private:最严格访问控制权限,仅该类本身可见,对外一切类都不可访问。 java对于类要求子类的权限不小于父类,所有类都直接或间接是object类的子类。一个类只能有一个父类可以有多个子类。 - duixiang a = new duixiang();
- 而在new对象的时候会调用构造函数。构造函数的名称和类的名称一致。
每一个技术小白都有一个成为大神的梦想,现在Android菜鸟饭团就给你这个成就梦想的机会。我们提供最新的Android技术教学,只要你又耐心和毅力就一定会在这里有所收获。 Android菜鸟饭团由 南阳GDG组织发起,秉承着开放、分享、创新的原则,希望通过GDG社区的力量能够给更多的想要学习Android开发技术的小白们创造一个学习,交流,分享的环境。同往常的GDG活动一样,我们依然是任性的一个子都不要,并且还在周六的分享中提供盒饭和不定期的惊喜小礼物呦~所以快来加入我们吧,为你的大神梦想迈出第一步。
|