标签:default java基础 设计程序 private public
利用白富美接口案例,土豪征婚使用匿名内部类对象实现。
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