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.预习多线程。