day08

一、复习 
接口 
是个特殊的抽象类,属性:公开静态常量,方法:公开抽象方法 
没有构造方法 
接口之间可以多继承,一个类在继承另外一个类的同时,和可以实现多个接口 

优点: 
1、实现多继承,不会破坏类之间的单继承简单的树状关系。区分主类型和次要类型。 
2、标准,解耦合工具 
   标准的使用者和标准的实现者通过借口隔离开,使得接口实现者的改变对使用者没有影响 

接口的回调: 
有了接口之后,先有接口使用者,后有接口的实现者,把接口实现者对象传给接口使用者,接口使用者通过接口,调用接口实现这中的方法 

二、Object 
java中所有的类的父类或直接或间接的或隐含的都是Object类。 
java不允许循环继承,也就是互相继承是不可以的。 

主要方法: 
(1)finalize():对象被垃圾收集的时候最后调用的方法 
      不能把释放资源的代码写在其中,程序员不能控制调用时机 
(2)equals(): 对象内容的比较 
      Object类中的boolean equals(Object o)方法是用来比较对象的内容是否相等,其返回值是boolean类型的值,相同为真,不同则为假。 
      实际上还是比较对象地址是否相同。String类覆盖了equals()方法,他比较是对象中的内容是否相同。 
      子类中也推荐覆盖Object类中继承的equals()方法,自己制定比较规则 

      自反性:s.equals(s)  true 
      对称性:s1.equals(s2) true 
             s2.equals(s1) true 
      传递性:s1.equals(s2) true 
             s2.equals(s3) true 
             则 s1.equals(s3) true 
      覆盖equals()方法的步骤 
           boolean equals(Object o){ 
                if(this==o) return true;//1,看看是不是一个对象 
                if(o==null) return true;//2,看看对象是不是空 
                if(!(o instanceof 本类类名)) return false;//看看是不是本类对象 
                ......//根据本类设计。 
            } 
(3)toString():返回对象的字符串表现形式 
      Object类中的toString()方法他返回的是类名加上他的地址的一个字符串。在子类中推荐覆盖toString()方法。 
      System.out.println(person);实际上打印的是person对象toString方法的返回值. 
      

练习: 
Employe类 属性:name,age,salary 
把equals().toString()方法覆盖 


三、封装类 
JAVA为每一个简单数据类型提供了一个封装类,使每个简单数据类型可以被Object来装载。 
除了int(Integer)和char(Character),其余类型首字母大写即成封装类类型名。 

转换字符的方式: 
int I=10; 
String s=I+” ”; 
String s1=String.valueOf(i); 

Int I=10; 
Interger I_class=new integer(I); 

封装类.字符串.基本类型 

int--------------------(Integer(x.toString))---------------->Integer 
String -----------------(Integer.valueOf() )---------------->Integer 
Integer-----------------(x.toString() )--------------------->String 
int----------------------(100+””)------------------------->String 
String------------------(Integer.parseInt() )--------------->int 
Integer-----------------(Integer.intValue() )--------------->int 

四、异常 
帮错误发生的时候减少损失,提高容错性 

1、常的分类 
Throwable有两个子类:Error和Exception。 
一个Error对象表示一个程序错误,指的是底层的、低级的、不可恢复的严重错误。此时程序一定会退出,因为已经失去了运行所必须的物理环境。 
对于Error错误我们无法进行处理,因为我们是通过程序来应对错误,可是程序已经退出了。 
我们可以处理的Throwable类中只有Exception类的对象(例外/异常)。 

                       Throwable 
                          | 
                  ------------------ 
                  |                 | 
              Error             Exception 
                                    | 
                             -------------- 
                            |              | 
                  RuntimeException      非Runtime异常 
                  未检查异常             已检查异常 
                  由于程序员疏忽造成的    不可避免的 
                  可避免的               必须处理 
                  可处理,可不处理 

2、异常的产生和传递 
  throw  new一个异常对象;   ---表示抛出一个异常 
  throw new NullPointerException(); 
  相当于return,函数返回上一级 

传递: 
沿着方法调用链反向传递! 
当一个方法中出现异常,而没有作处理,则以异常对象为返回值返回调用处(逐级传递) 
异常返回给虚拟机时,虚拟机终止退出,程序结束 

3、异常的处理 
  (1)声明抛出  
       是方法声明的第五部分  throws+异常名字(多个异常用“,”分隔) 
       出现异常,不处理,抛给上一级处理 
       并且子类抛出异常的范围不能比父类抛出异常的范围更宽。 
  (2)捕获异常 
       try - catch 
       try - catch - finally 
       try - finally     //不捕获异常,当异常发生,返回上一级之前,要运行finally中的代码 
       以上语句可以嵌套 

       返回类型 方法名(参数){ 
try{ 
可能出错语句 
正常语句 
}catch(异常类 e){  //某种异常的引用 
对异常的处理 
} 
正常语句
} 

       捕获多个异常: 
       程序任何时刻只发生一个异常 
可对产生的每个异常分别捕捉,也可由同一异常进行处理,前提是这个共用的异常应该是所有这些该被捕获的异常的父类,但是,对于非受查异常不成立 
当try后面有多个语句块时,注意catch异常的顺序,子类必须放在父类的前面 

       finally关键字 
无论异常是否发生,一定会执行的代码,可放在finally块内。 
要点:没有异常产生时:正常执行try{}catch(){} —> 进入finally语句块 —> 方法中剩余代码 
     有异常产生时(捕找到) —> 进入catch处理 —> 进入finally语句块 —> 方法中剩余代码 
     有异常产生时(没捕找到)—> 进入finally语句块 —> 离开方法 
       一般写一些释放资源的代码 
       在try - catch 块中遇到System.exit(0);则不会执行finally中的代码 

       Throwable有一个message属性。在使用catch的时候可以调用: 
       Catch(IOException e){System.out.println(e.getMessage())};  //打印出来的是创建(throw new)异常对象的时候,给定的参数 
       Catch(IOException e){e.printStackTrace()};                 //打印堆栈追踪信息 
       以上两条语句都是可以打印出错的过程信息。告诉我们出错类型所历经的过程,在调试的中非常有用。 

开发中的两个道理: 
①如何控制try的范围:根据操作的连动性和相关性,如果前面的程序代码块抛出的错误影响了后面程序 代码的运行,那么这个我们就说这两个程序代码存在关联,应该放在同一个try中。 
②对已经查出来的例外,有throw(消极)和try catch(积极)两种处理方法。 
对于throws把异常抛到try catch能够很好地处理异常的位置(即放在具备对异常进行处理的能力的位置 )。如果没有处理能力就继续上抛。 

4、自定义异常 
   (1)继承Exception类 
   (2)构造方法: 
不带参数的构造方法 
带参数的构造方法:参数指出错误性质,super(message);把参数传递给父类构造异常 

作业 
(1)为Account类及其子类添加toString方法和equals方法 
(2)(Exception) 
为BAM添加几个异常类 

BalanceNotEnoughException :用于取钱的时候余额不足的情况(包括账户余额超过透支额的情况) 
RegisterException:用于开户异常的情况,例如密码两次输入不一致等情况 
LoginException:用户登录异常的情况,例如id错误,密码错误 
LoanException:贷款额不能为负数,如果用户试图将贷款额置为负数,则会抛出这个异常 

以上四个异常类有一个共同的父类 BusinessException 
并妥善的处理这些异常
要求编写程序模拟银行账户的存、取款操作。按要求完成以下步骤: 步骤1:编写程序Account.java,其中定义银行账户类Account。该类中有账号、姓名、 存款余额等数据域,余额默认是0;有存款、取款、获取当前余额等方法。其中账号为长度 为12位数字的字符串,姓名为字符串,存款余额为double。 步骤2:编写名为CreditAccount类的信用卡账户类。该类继承自Account类,增加一 个透支限额(double)数据域,透支限额默认为1000。同时该类账户取款时允许透支,但不 能超过透支限额。 步骤3:编写名为SavingAccount的储蓄账户类SavingAccount。该类继承自Account 类。该类账户取款时不允许透支。 步骤4:编写名为Bank的模拟银行类,其中可以存储多个类型可能是信用卡账户或储 蓄账户的对象(可以用数组或ArrayList实现)。该类包含以下方法: 开户:即增加一个新的账户,注意:不允许两个账户的账号相同 销户:即删除一个已有的账户 查询账户:根据一个账号,查询有无该账号的账户 统计目前银行的存款总余额的方法。 统计目前银行的信用卡账户总透支金额的方法。 统计目前总账户数。 统计目前信用卡账户数 统计目前储蓄卡账户数 步骤5:编写客户端类Client.java完成以下功能: 编写一个静态方法,创建一个银行对象,并随机生成10个账号从1000 0000 0000 0000到1000 0000 0000 0009,类型不同的账户。 main方法中模拟几次开户操作。 main方法中模拟几次销户操作。 模拟几个对指定账号的存款和取款操作。 输出银行的总账户数、总余额、总透支数、各类具体账户数。
1.需要完成的任务 使用UserDaoImp1类和User类的相关方法,完成如下功能: (1)对空的User类对象调用getUserInfo()方法抛出的异常处理 (2)修改UserDaoImp1类,要求用户id不能修改,修改则抛出异常 (3)使用log4j输出日志信息 2.技能训练 (1)会使用try-catch-finally捕获和处理异常 (2)会使用throw和throws (3)会使用log4j记录日志 3.实践 实践一:使用try-catch进行异常处理 需求说明 (1)使用UserDaoImp1类的方法查找用户,并用User类的getUserInfo()方法输出用户信息 (2)使用一个不存在的用户名查找用户,使用try-catch对抛出的异常进行处理 实现思路及关键代码 (1)在测试类中调用UserDaoImp类的addUser(User user)方法,添加用户,然后用findUser(String uName)方法查找并输出用户信息 (2)在测试类中调用UserDaoImp1类的findUser(String uName)方法,使用不存在的用户名查找用户,并试图输出用户信息 (3)对抛出的异常使用try-catch进行异常处理。 实践二:使用try-catch-finally进行异常处理 需求说明 (1)对实践1的异常使用try-catch-finally进行异常处理 (2)在finally块输出是否抛出了异常 实现思路及关键代码 (1)在任务一中的代码上增加finally块 (2)为了判断在finally块输出是否抛出异常,可以设置一个变量,在catch块里修改这个变量 实践四:使用log4j 需求说明 (1)使用log4j输出日志信息 (2)查看输出日志信息
《淘淘商城-day08.docx》是一份关于淘淘商城第八天工作的文档。在这一天,淘淘商城的团队采取了一系列措施来进一步提升用户体验和销售业绩。 首先,团队进行了网站内容的优化。他们对商品详情页进行了修复和更新,确保信息的准确性和完整性。同时,他们也对页面的布局进行了调整,使得用户更容易浏览和购买商品。这些改进措施能够提升用户的满意度和购买转化率。 其次,团队还加强了与供应商的合作关系。他们与一些热门品牌建立起了合作伙伴关系,以获得独家销售权或更优惠的价格。这不仅能够吸引更多的用户,还能提高淘淘商城的竞争力。 另外,团队还对物流配送进行了优化。他们与一家可靠的物流公司合作,以确保商品能够及时、安全地送达给用户。他们还推出了更快速、更便捷的配送选项,如次日达和晚间配送,以满足用户的各种需求。 为了增加用户的复购率,团队还积极进行了促销活动。他们推出了限时限量的特价商品,以及购买一定金额就能获得赠品或折扣的优惠活动。这些促销措施能够吸引用户重复购买,并提升销售额。 总之,《淘淘商城-day08.docx》记录了淘淘商城团队在第八天所做的一系列工作。通过网站内容优化、供应商合作、物流配送优化和促销活动,团队致力于提升用户体验和销售业绩,从而使淘淘商城更加竞争和成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值