------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ----
来源:互联网 发布:特惠淘宝网站 编辑:程序博客网 时间:2024/04/24 20:27
黑马程序员 面向对象
匿名内部类
匿名内部类就是内部类的简化写法。
定义匿名内部类的前提:内部类必须是继承一个类或者实现接口。
格式为:
new 外部类名或者接口名(构造函数参数){
覆盖类或者接口中的代码,也可以自定义内容
}.方法();
简而言之:就是建立一个带内容的外部类或接口的子类匿名对象
匿名内部类中定义的方法最好不要超过2个。
当调用的方法的参数是一个接口时,当这个接口的方法小于3个时,可以用匿名内部类。
异常
异常的体系
Throwable:Error,Exception
Exception和Error的子类名都是以父类名为后缀的
Throwable中的方法:
getMessage():获取异常信息,返回字符串
toString() : 获取异常类名和异常信息,返回字符串
printStackTrace() : 获取异常类名和异常信息,以及异常出现在程序中的位置,返回值void
printStackTrace(PrintStream s) : 通常用该方法将异常内容保存在日志文件中,以便查阅
十一. throws和 throw
throws用于标识函数暴露出的异常
throw用于抛出异常对象
throws和throw的区别:
throws用在函数上,后面跟异常类名
throw用在函数里,后面跟异常对象
十二. 异常处理:
try{
需要检测的代码;
}catch(异常类 变量){
异常的处理代码;
}finally{
一定执行的代码;
}
finally只有一种情况下不会执行,就是在之前执行了System.exit(0);
十三. 多异常处理
调用的方法中抛出几个异常,就应该有几个catch进行捕获。不要定义多余的catch块。建议在进行catch处理时,catch中一定要定义具体的处理方式。不要简单的定义一句e.printStackTrace();
十三. 自定义异常
自定义异常类继承Exception类或者其子类
通过构造方法定义异常信息
class DemoException extends Exception{
DemoException(Stringmessage){
super(message);
}
}
通过throw将自定义异常抛出
throw new 自定义异常类名();
当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作。要么在内部try catch处理。要么在函数上声明让调用者处理。一般情况下,函数内出现异常,函数上需要声明。
因为父类中已经把异常信息的操作已经完成了,所以子类只要在构造时,将异常信息传递给父类通过super语句。那么就可以直接通过getMessage()方法获取自定义的异常信息了。
继承Exception原因:
异常体系有一个特点:因为异常类和异常对象都被抛出。他们都具备可抛性,这个可抛性是Throwable这个体系中独有特点。
只有这个体系中的类和对象才可以被throws和throw操作。
throws和throw的区别:
throws:使用在函数上。后面跟异常类,可以跟多个,用逗号隔开。
throw :使用在函数内。后面跟异常对象。
十四. 异常细节
Exception中有一个特殊的子类异常RunTimeException运行时异常。
如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过,如果在函数上声明了该异常,调用者可以不用进行处理,编译一样通过。
之所以不用在函数上声明,是因为不需要让调用者处理。当该异常发生,希望程序停止。因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码进行修正。
自定义异常时:如果该异常的发生,无法在继续进行运算,就让自定义异常继承RunTimeException
对于异常分为两种:
编译时被检测的异常。
编译时不被检测的异常(运行时异常。RunTimeException以及其子类)
格式1:
try{
}catch(){
}
格式2:
try{
}catch(){
}finally{
}
格式3:
try{
}finally{
}
//catch是用来处理异常,如果没有catch就挖根挨批凤有被处理过,如果该异常是检测时异常。那么必须声明。
异常在子父类覆盖中的体现:
子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。
如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
如果父类或者接口的方法中,没有异常抛出。那么子类在覆盖方法时也不可以抛出异常。如果子类方法发生了异常,就必须要进行try处理。绝对不能抛。
十五. 包(package)
包是一种封装形式
编译时加参数,如:javac –d . 类名
类名的全称:包名.类名
被访问的包中的类权限必须是public的。类中的成员权限:public和protected
protected是为其它包的子类提供的一种权限
权限
public protected default private
同类 Y Y Y Y
同包 Y Y Y
子类 Y Y
不同包 Y
一个类文件中只能有一个public修饰的类
导入包:import 包名.类名
如果要导入包下所有的类,即包名.*,但不包括子包中的类
当导入的包中,存在重名的类时。调用时用:包名.类名 的方法
十六. Jar包
需要执行jar包中的类时,把jar文件路径放至classpath环境变量中
版权声明:本文为博主原创文章,未经博主允许不得转载。
1.面向对象是相对于面向过程而言的。(1)面向过程强调过程,执行者。(2)面向过程强调过程,指挥者。我让你帮我买烟,就是面向对象。我自己去买烟就是面向过程。(3)面向对象的特点:a.封装b.继承c.多态
2.类和对象:(1)类是对现实世界的描述。(2)对象是现实中存在的个体。
3.成员变量和局部变量(1)作用范围:局部变量在方法内,成员变量在类中。(2)存储空间:局部变量在栈中,成员变量在堆中。(3)初始化值:局部变量人工初始化赋值,成员变量jvm默认初始化。
4.匿名对象的使用(1)对对象中的功能只执行一次的时候使用,否则用有名字对象。(2)勇于作为实际参数进行传递。
5.封装:把属性隐藏仅对外提供公共的访问方法。(1)好处:便于重复使用,安全性高。
6.private:(1)可以早方法中对成员变量的访问进行控制。私有只是封装的一种体现形式。(2)常用方法:void setAge(int a){}int getAge(){}
public void setAge(int age){//age = -20;
7.构造函数特点:(1)方法名必须与类名相同(2)构造函数没有返回值也不能定义为void,方法名前不声明方法类型(3)构造方法不能有编程人员调用而是由系统调用(4)一个类可以定义多个构造方法(5)若没定义构造函数系统会给一个默认的无参构造函数(6)给对象初始化,一建立对象系统就会自行调用
8.class Person{
}
class Demo{
}
9.this关键字:哪个对象调用this所在的函数this就代表了那个对象。作用:(1)函数参数或者函数中的局部变量和成员变量同名的情况,用this.成员变量名来引用成员变量。(2)在函数中需要引用该函数所属类的当前对象时候直接用this(3)this(参数列表)在一个构造函数中调用另一个构造函数用这种this语句(只可放在构造函数第一行)。
Person(String name){
10.代码块:(1)局部代码块定义在方法里,可以控制变量的生命周期(2)构造代码块定义在类里,每创建一次对象就执行一次(3)静态代码块给类进行初始化,只在第一次new执行一次。Person p =new Person的过程中在内存做了什么:a.将Person.class加载进内存b.p定义函数中,在栈内存中开辟了变量空间pc.在堆内存中分配空间并分配内存地址值,d.给对象中的属性进行默认初始化额e.给对象中的值进行显示初始化f.调用构造代码块对对象进行初始化g.调用构造函数进行初始化h.将对象的内存地址值赋值给p变量,让p变量指向该对象。
11.static静态用于修饰成员变量,成员被静态修饰后可以直接用:类名.静态成员调用。静态特点:随类的加载而加载,生命周期长。优先于对象存在。被所有对象共享。静态变量都被存储在方法区。实例变量是非静态成员变量,类变量是静态变量。类变量随类的加载存在于方法区,实例变量随对象的建立存在于堆中。类变量所属于整个类,被所有对象共享,实例变量是对象的特有数据。要注意:1)静态方法只可以访问静态成员,非静态方法既可以访问静态页可以访问非静态。2)静态方法中不可以定义this super关键字因为静态优先于对象存在,所以静态方法中不可以出现this。静态的利弊:对对象的共享数据提供单独的存储空间,不用每个对象都存一份节约内存,可以类名.直接调用。生命周期过长,静态虽好,只可访问静态。什么时候可以使用静态:成员变量所存储的数据每个变量否拥有这个数据,没必要存储到对象中,让所有对象共享该数据即可,用static修饰。什么时候定义静态函数:当成员函数没有访问对象的特有数据是,就将该方法定义成静态的,该方法没有访问到静态的特有数据,直接类名.调用即可。
12.单利设计模式:饿汉式:1)私有构造函数2)创建一个本类对象3)定义一个公共的访问方式:
懒汉式:1)私有构造函数2)声明一个本类引用3)定义一个公共的访问方式
class Single {
- ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ----
- ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ----
- ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ----
- ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ----
- ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ----
- ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ----
- ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ----
- ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ----
- ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ----
- ----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
- <a href="http://www.pianopro.cn">通州钢琴培训</a>
- 尖峰在线培训 http://www.jianfengedu.com/
- 培训
- 培训
- 培训
- 培训
- 培训
- 培训
- !Gym 100625J 狱警放两犯人的最小开门数-bfs-(优先队列+bfs,求各自到交点的距离)
- java设计模式之一 —— 工厂模式整理
- 数据结构实验之二叉树的建立与遍历
- 函数模板与类模板
- 百度地图获取周边位置
- ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ----
- Listiew动态生成Item时只显示最新生成的这条item
- AWS S3 API实现文件上传下载
- CodeForces-570A Elections
- iOS 多线程总结
- 监听android键盘弹出隐藏
- MongoDB之索引
- JAVA随笔篇二(深入分析JAVA简单类型、String和对象的值传递和引用传递)
- 深入浅出TCP协议的2MSL TIME_WAIT状态