码迷,mamicode.com
首页 > 编程语言 > 详细

IT十八掌作业_java基础第七天_匿名内部类、异常、包和jar

时间:2016-05-11 23:58:16      阅读:427      评论:0      收藏:0      [点我收藏+]

标签:default   java基础   设计程序   private   public   

  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 skinWhite();

}

interface IRich 

{

    public void walletRich();

}

interface IBeauti 

{

    public void faceBeauti();

}

// 定义一个白富美接口继承三个接口

interface WhiteRichBeauti extends Iwhite, IRich, IBeauti 

{

}

// 定义一个男土豪类

class Tuhao 

{

    public void marry(WhiteRichBeauti woman) 

    {

        System.out.println("Find Love!");

    }

}

class TuhaoDemo

{

    public static void main(String[] args)

    {

        Tuhao th = new Tuhao();    

        th.marry(new WhiteRichBeauti(){

            public void skinWhite()

            {

                System.out.println("I‘m white!!");

            }

            public void walletRich()

            {

                System.out.println("I‘m rich!!");

            }

            public void faceBeauti()

            {

                System.out.println("I‘m beautiful!!");

            }    

        });

    }

}

/**

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

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

 *

 */

class LengthToBigException extends Exception

{

    private String info;

    public LengthToBigException()

    {

    }

    public LengthToBigException(String info)

    {

        this.info = info;

    }

    public void setInfo(String info)

    {

        this.info = info;

    }

    public String getInfo()

    {

        return info;

    }

}

class Trianle

{

    int len1,len2,len3;

    public Trianle(int len1,int len2,int len3) throws LengthToBigException

    {

        if(((len1+len2)<=len3)||((len1+len3)<=len2)||((len2+len3)<=len1))

        {

            throw new LengthToBigException("非法的三角形边长度!!");

        }else

        {

            this.len1=len1;

            this.len2=len2;

            this.len3=len3;

        }

    }

    public int getLength()

    {

        return len1+len2+len3;

    }

}

class ExceptionDemo

{

    public static void main(String[] args)

    {

        try

        {

            Trianle tr = new Trianle(3,2,6);

            System.out.println("三角形的周长为"+tr.getLength());

        }

        catch(LengthToBigException ex)

        {

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

            ex.setInfo("理由:不满足任意两边只和大于第三边!!");

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

        }

        catch(Exception e)

        {

            e.printStackTrace();

        }

    }

}

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

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

  思路:定义一个BirthdayException,提供setter,getter异常信息设置获取方法。

        定义Person类成员birthday属性,对setBirthday传入生日年月日参数进行判断

            |--年是整数,限定一个范围1916~2016

            |--月范围是1~12月

            |--日:首先为1~31,其次1,3,5,7,8,10,12为31天,闰年的二月29天,平年二月28天,4,6,9,11为30天

  */

class BirthdayException extends Exception

{

    private String info;

    public BirthdayException()

    {

    }

    public BirthdayException(String info)

    {

        this.info = info;

    }

    public void setInfo(String info)

    {

        this.info = info;

    }

    public String getInfo()

    {

        return info;

    }

}

class Person    //定义Person类,增加setBirthday方法,并对生日有效性做处理!

{

    private String birthday;

    public void setBirthday(int year,int month,int day) throws BirthdayException

    {

        if(year>2016||year<1916)

            throw new BirthdayException("非法生日年份!");

        else if(month>12||month<1)

            throw new BirthdayException("非法的生日月份!");

        else if(day>31||day<1)

            throw new BirthdayException("非法的生日天数!");

        else if(!EffientDay(year,month,day))

            throw new BirthdayException("非法的生日具体日期!");

        else

            birthday = year+"年"+month+"月"+day+"日";

    }

    public boolean EffientDay(int year,int month,int day)

    {

        if(month==2)    //判断是否闰年

        {

            if(year%400==0)

                return day<=29;

            else if(year%4==0)

                return day<=29;

            else 

                return day<=28;

        } 

        else if(month ==4||month==6||month==9||month==11)

            return day<=30;

        else

            return day<=31;

    }

    public String getBirthday()

    {

        return birthday;

    }

}

class ExceptionDemo2

{

    public static void main(String[] args)

    {

        Person p = new Person();

        try

        {

             //p.setBirthday(1915,1,3);        //非法生日年份!

             //p.setBirthday(2016,13,3);    //非法的生日月份!

             //p.setBirthday(2008,7,32);    //非法的生日天数!

             //p.setBirthday(2000,2,29);        //2000年2月29日

             //p.setBirthday(2001,2,29);        //非法的生日具体日期!

             //p.setBirthday(2008,4,31);        //非法的生日具体日期!

             p.setBirthday(2015,7,31);        //2015年7月31日

             System.out.println("生日为: "+p.getBirthday());

        }

        catch(BirthdayException ex)

        {

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

        }

        catch(Exception e)

        {

            e.printStackTrace();

        }

    }

}

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

package com.it18zhang;

class PackageDemo

{

    public static void main(String[] args)

    {

        System.out.println("package lenarning!!");

    }

}

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

package com.it18zhang;

class PackageDemo

{

    public static void main(String[] args)

    {

        System.out.println("package lenarning!!");

    }

}

/*当前cmd路径:D:/java

    D:\java>md classes

编译:D:\java>javac -d classes PackageDemo.java

打成jar文件格式一:jar cvf myjar.jar -C classes .

打成jar文件格式二:jar cvfe myjar.jar com.it18zhang.PackageDemo -C classes .

使用java -jar参数运行程序:

                            Java -jar myjar.jar            执行jar文件

                            java -jar myjar.jar com.it18zhang.A        执行jar文件当中的入口

*/

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

/*

Person.java和StudentDemo.java文件如下所示,student类继承了Person类。

首先将Person.class打包成jar包,jar cvf Person.jar Person.class

然后将Person.jar和Student.java放到D:\java\classes文件夹下,

编译:      javac StudentDemo.java                      //出错,提示找不到Person类,

将jar文件设置cp下:

            javac -cp .;Person.jar Studentdemo.java    //编译通过,

运行:        java StudentDemo                          //运行失败,提示找不到Person类

将Perosn.jar设置cp下:

            java -cp .;Person.jar StudentDemo          //运行成功。          

*/


//StudentDemo.java

class Student extends Person

{

    public void study()

    {

        System.out.println("学生具备学习的能力!");

    }

}

class StudentDemo

{

    public static void main(String[] args)

    {

        Student st = new Student();

        st.study();

    }

}

//person.java

class Person

{

    private String name;

    private int age;

    public void setName(String name)

    {

        this.name = name;

    }

    public String getName()

    {

        return name;

    }

    public void setAge(int age)

    {

        this.age = age;

    }

    public int getAge()

    {

        return age;

    }

}


本文出自 “菜鸟成就数据之路” 博客,转载请与作者联系!

IT十八掌作业_java基础第七天_匿名内部类、异常、包和jar

标签:default   java基础   设计程序   private   public   

原文地址:http://liubx.blog.51cto.com/11235064/1772427

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!