java基础第七天_匿名内部类异常包和jar

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础第七天_匿名内部类异常包和jar相关的知识,希望对你有一定的参考价值。

1.利用白富美接口案例,土豪征婚使用匿名内部类对象实现。

2.定义三角形类Trianle,里面包含三个int类型属性,分别表示三条边的长度,

  构造三角形对象时,任意两边之和是否大于第三边,如若不成立,抛出自定义异常。

3.Person类中增加birthday属性,对setBirthday(int ,int , int )方法进行异常处理,

  要求年有效、月有效、日有效、年月日指定的具体日期有效,对不同情况分别抛出不同的异常。

4.将类定义到指定的包下。com.it18zhang,编译之后,打成jar文件。

5.相互之间使用jar包,放置cp下,对class进行重用。

6.设计程序,考查修饰符。public -> protected -> default -> private(选做题)

7.预习多线程。


答:

1.利用白富美接口案例,土豪征婚使用匿名内部类对象实现。

//白

interface IWhite{

public  void white();

//富

interface IRich{

public  void rich();

//美

interface IBeauti{

public  void beauti();

//白富美集合

interface IBFM extends IWhite,IRich,IBeauti{

}


/*

// 女明星实现这个接口

class WomanStar implements IBFM{

public  void white(){

System.out.println("我很白");

}

public  void rich(){

System.out.println("我很富");

}

public  void beauti(){

System.out.println("我很美");

}

}

*/


//土豪

class RichMan{

public void marry(IBFM i){

System.out.println("有戏");

}

}


//主方法

class MarryDemo{

public static void main(String[] args){

/*WomanStar w=new WomanStar();

w.white();*/

RichMan rm=new RichMan();

rm.marry(new IBFM(){

public  void white(){

//System.out.println("我很白");

}

public  void rich(){

//System.out.println("我很富");

}

public  void beauti(){

//System.out.println("我很美");

}

}); 

/*WomanStarDriver wsd =new WomanStarDriver();

System.out.println("---------------");

wsd.white();

rm.marry(wsd);

rm.drive(wsd);*/

}

}

2.定义三角形类Trianle,里面包含三个int类型属性,分别表示三条边的长度,

构造三角形对象时,任意两边之和是否大于第三边,如若不成立,抛出自定义异常。

//自定义异常

//三边都是大于0

class SideErrorException extends Exception{

private String info;

public  SideErrorException(String info){

this.info=info;

}

//public  SideErrorException(String info){

//}

public String getInfo(){

return info;

}

public void setInfo(String info){

this.info=info;

}

}

//三角形定律 两边和大于第三边

class SideRuleException extends Exception{

private String info;

public  SideRuleException(String info){

this.info=info;

}

//public  SideRuleException(String info){

//}

public String getRuleInfo(){

return info;

}

public void setRuleInfo(String info){

this.info=info;

}

}

//定义三角形

class Triangle{

private int side1;

private int side2;

private int side3;

public int getSide1(){

return side1;

}

public int getSide2(){

return side2;

}

public int getSide3(){

return side3;

}

public void setSide1(int side1) throws SideErrorException{

if( side1 >0 ){

this.side1=side1;

}

else {

throw new SideErrorException("边长要大于0");

}

}

public void setSide2(int side2)  throws SideErrorException{

if( side2 >0 ){

this.side2=side2;

}

else {

throw new SideErrorException("边长要大于0");

}

}

public void setSide3(int side3)  throws SideErrorException{

if( side3 >0 ){

this.side3=side3;

}

else {

throw new SideErrorException("边长要大于0");

}

}

public void ruleTriangle(int a,int b, int c) throws SideRuleException{

if (a+b>c & a+c>b & b+c>a ){

System.out.println("这是个三角形");

}

else {

throw new SideRuleException("这不是三角形");

}

}

}


//定义主类

class TriangleDemo{

public static void main(String[] args){

Triangle tt =new Triangle();

try{

tt.setSide1(0);

tt.setSide2(8);

tt.setSide3(12);

tt.ruleTriangle(tt.getSide1(),tt.getSide2(),tt.getSide3());

}

catch(SideErrorException ss){

ss.printStackTrace();

System.out.println(ss.getInfo());

}

catch(SideRuleException sss){

sss.printStackTrace();

//System.out.println(sss.getRuleInfo());

}

System.out.println("over");

}

}

3.Person类中增加birthday属性,对setBirthday(int ,int , int )方法进行异常处理,

  要求年有效、月有效、日有效、年月日指定的具体日期有效,对不同情况分别抛出不同的异常。

//自定义异常

class BirthdayErrorException extends Exception{

private String info;

public  BirthdayErrorException(String info){

this.info=info;

}


public String getInfo(){

return info;

}

public void setInfo(String info){

this.info=info;

}

}



class Person{

private String birthday;

public String getBirday(){

return birthday;

}

public void setBirthday(int year,int month ,int day) throws BirthdayErrorException{

if( year < 1900 || year > 2016){

throw new BirthdayErrorException("这个生日有问题,年超出了范围");

}

if (month <= 0 || month > 12){

throw new BirthdayErrorException("这个生日有问题,月超出了范围");

}

if (day > 31 || day <= 0){

throw new BirthdayErrorException("这个生日有问题,日超出了范围");

}

/*

boolean isThirdOne = date == 1 || date == 3 || date == 5 || date == 7

  || date == 8 || date == 10 || date == 12;

  if (!isThirdOne && date == 31) {

  throw new InvalidParamExcetion("日期不合适," + month + "月不存在" + date

  + "日");

  }

  if (month == 2 && date > 29) {

  throw new InvalidParamExcetion("日期不合适,2月不存在" + date + "日");

  }

  if (year % 4 != 0 && month == 2 && date == 29) {

  throw new InvalidParamExcetion("日期不合适," + year + "不是闰年,所以2月不存在"

     + date + "日");

     */

      if (month == 2 && day> 29) {

  throw new BirthdayErrorException("这个生日2月日有问题,,日超出了范围");

  }

  if (year % 4 != 0 && month == 2 && day == 29) {

  throw new BirthdayErrorException("这个生日有问题,2月不是闰月日不是29");

  }

      if ((month == 2 || month == 3 || month == 6 || month == 9

  || month == 11) && day==31){

      throw new BirthdayErrorException("这个生日有问题,双月日期没有31");

      }

      System.out.println("生日:"+year+"年"+month+"月"+day+"日");

}

}


//定义主类

class BirthdayDemo{

public static void main(String[] args){

Person tt =new Person();

try{

tt.setBirthday(2015, 12, 5);

//tt.setBirthday(2015, 11, 31);

//tt.setBirthday(2015, 2, 31);

//tt.setBirthday(2012, 2, 30);

tt.setBirthday(2013, 2, 29);

}

catch(BirthdayErrorException ss){

ss.printStackTrace();

System.out.println(ss.getInfo());

}

System.out.println("over");

}

}

4.将类定义到指定的包下。com.it18zhang,编译之后,打成jar文件。

a.定义Car类  Car.java

package com.it18zhang;

class Car{

public static void main(String[] args){

System.out.println("习题作业");

}

}

编译到classes文件夹下 javac -d ./classes Car.java

b.打成jar包

jar cvf test.jar -C classes/ .


5.相互之间使用jar包,放置cp下,对class进行重用。

执行jar包:java -jar myjar.jarcom.it18zhang.A

6.设计程序,考查修饰符。public -> protected -> default -> private(选做题)

 private 只能在本类中使用

default 只能在同一包或类中

protected 在同一包或类、子类中 不能在不同包中

public 都可以



7.预习多线程。


本文出自 “作业” 博客,转载请与作者联系!

以上是关于java基础第七天_匿名内部类异常包和jar的主要内容,如果未能解决你的问题,请参考以下文章

Java基础学习第七天

No_16_0226 Java基础学习第七天

阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第2节 线程实现方式_14_匿名内部类方式实现线程的创建

20165236 第五周学习总结

1.Java基础-异常泛型匿名内部类集合

java基础15 内部类(成员内部类局部内部类)和匿名内部类