IT十八掌第七天总结(含作业)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IT十八掌第七天总结(含作业)相关的知识,希望对你有一定的参考价值。
IT十八掌第七天总结(含作业) 回顾 -------- 对象A 子类 AA 子类AAA 可以使用 A AA AAA 分别来创建新的子类 可以使用任意一个来声明 抽象类和接口 ------------------- 接口中的所有方法都是抽象的 抽象类可以没有抽象方法 共 都不能实例化 内部类编译后成员位置 用“$” 来间隔的 局部位置 用数字来间隔 匿名内部类对象 ------------------------ 将对类的继承,方法重写,对象的创建集成到一行代码中去。 格式: new 外部类名或者接口名(){覆盖类或者接口中的代码,(也可以自定义内容。)} 以*为例 //函数的调用 Button btn1 = new Button(); //匿名内部类对象,将类的继承、方法的重写、对象创建一气呵成。 btn1.addListener(new ButtonListenerAdapter(){ // btn1.addListener 是要调用addListener 方法 该方法是要监听器接口为参数,该监听器为 {} 就相当于继承 public void onClick(){ System.out.println("点击一次"); } 该方法为定义两个匿名类对象 拜btn1 和 btn2 方法[1] *************************************************** 写代码的时候要注意 先将符号完善,括号成对写完。 在一条语句的结尾使用 ; 结尾 *************************************************** Button btn1 = new Button(); //匿名内部类对象,将类的继承、方法的重写、对象创建一气呵成。 btn1.addListener(new ButtonListenerAdapter(){ public void onClick(){ System.out.println("点击一次"); } }); //创建btn2对象,使用匿名内部类,对onClick(),onDbClick()两个方法给出实现。 Button btn2 = new Button(); btn2.addListener(new ButtonListenerAdapter(){ public void onClick(){ System.out.println("点击一次"); } public void onDbclick(){ System.out.println("点击两次"); } }); [方法2] ButtonListenerAdapter aa = new ButtonListenerAdapter() { public void onClick(){ System.out.println("点击一次"); } public void onDbclick(){ System.out.println("点击两次"); } }; //注意以 ; 结尾 两种方法结果相同 另外ButtonListenerAdapter --> ButtonListener (面向对象编程) 即 ButtonListenerAdapter aa = new ButtonListenerAdapter() --> ButtonListener aa = new ButtonListenerAdapter() 用匿名内部类对象重写土豪征婚 //定义三个 白、富、美 interface IWhite{ //定义白 public void Whiteing (); } interface IRich{ //定义富 public void Riching (); } interface IBeautiful{ //定义美 public void Beautifuling (); } //定义一个接口继承白、富、美 三个接口 interface WomanStart extends IWhite,IRich,IBeautiful{ } //定义土豪类 class EarchRicher{ // public void marry(WomanStart MM){ System.out.println("FIND 白富美 !!"); } } class EarchRicherMan { public static void main(String[] args){ WomanStart W = new WomanStart(){ public void Whiteing (){ } public void Riching (){ } public void Beautifuling (){ } }; EarchRicher M =new EarchRicher(); M.marry(W); } } 异常 ———————————————————————————————————— java.lang.throwable java.lang.Error java.lang.Exception 异常的体系 Throwable Error 通常出现重大问题如:运行的类不存在或者内存溢出等。 不编写针对代码对其处理 Exception 在运行时运行出现的一起情况,可以通过try catch finally Exception和Error的子类名都是以父类名作为后缀 throws用于标识函数暴露出的异常。 throw用于抛出异常对象。 throws与throw的区别: thorws用在函数上,后面跟异常类名。 throw用在函数内,后面跟异常对象。 练习 异常函数声明 class Person{ private int age; //定义函数,声明异常 public void setAge(int age) throws Exception { //抛出异常声明 if (age < 0 || age > 120){ //抛出异常 throw new Exception("年龄不合法!!!"); } this.age = age ; // get set 定义age } public int getAge(){ return age; } } class ExceptionDemo{ public static void main(String[] args){ Person pe = new Person(); try{ //try 尝试 catch 捕捉 对异常进行处理 pe.setAge(130); } catch(Exception ex){ // catch()捕获哪几种异常 ex.printStackTrace(); //打印该函数的栈的跟踪信息 } } } /** *运行 * java.lang.Exception: 年龄不合法!!! * at Person.setAge(ExceptionDemo.java:7) * at ExceptionDemo.main(ExceptionDemo.java:23) * */ package -------------------- 包,文件夹。 java/lang/xxxx jar : java archieve,java归档文件。 java/lang/Object.class 全称类名,完整类名 : java.lang.Object java/lang/Object 编译时指定class文件存放目录使用-d参数: java -d xx/xxx PackageDemo.java 运行时指定class文件所在目录使用-cp参数: java -cp xx/xx A 可见性访问规则 ------------------ 修饰符 public protected default private ------------------------------------------------------------------ 范围 同类 v v v v 同包 v v v 子类 v v 不同包 v jar ----------------- 打包java库文件。 [将类路径下的类打成jar文件] jar cvf myjar.jar -C classes/ . //myjar.jar 为自定义的要打包成的文件名 //classes/是类文件所在文件夹 jar cvfe myjar.jar a.a1.a11.a111.A -C classes/ . //e指定的入口点. e是含有main函数的类 [使用java -jar参数来运行程序] java -jar myjar.jar //执行jar文件 java -jar myjar.jar a.a1.a11.a111.A //执行jar文件指定入口点。 2.定义三角形类Trianle,里面包含三个int类型属性,分别表示三条边的长度, 构造三角形对象时,任意两边之和是否大于第三边,如若不成立,抛出自定义异常。 答: class EdgeTooSmallException extends Exception { // 这个异常是用来判断边小于或等于0的 private String info; public EdgeTooSmallException() { } public EdgeTooSmallException(String info) { this.info = info; } public String getInfo() { return info; } public void setEdgeInfo(String info) { this.info = info; } } class EdgeNotMatchException extends Exception { // 这个异常是用来判断三角形的 private String info; public EdgeNotMatchException() { } public EdgeNotMatchException(String info) { this.info = info; } public String getInfo() { return info; } public void setEdgeNotMatchException(String info) { this.info = info; } } class Triangle { //三条边 private int edgea; private int edgeb; private int edgec; // edgea的get/set方法 public int getEdgea() { return edgea; } public void setEdgea(int edgea) throws EdgeTooSmallException { if (edgea > 0) { this.edgea = edgea; } else { throw new EdgeTooSmallException("边长A不能小于或等于0"); } } // edgeb的get/set方法 public int getEdgeb() { return edgeb; } public void setEdgeb(int edgeb) throws EdgeTooSmallException { if (edgeb > 0) { this.edgeb = edgeb; } else { throw new EdgeTooSmallException("边长B不能小于或等于0"); } } // edgec的get/set方法 public int getEdgec() { return edgec; } public void setEdgec(int edgec) throws EdgeTooSmallException { if (edgec > 0) { this.edgec = edgec; } else { throw new EdgeTooSmallException("边长C不能小于或等于0"); } } // 判断是不是三角形 public static void Checking(int x, int y, int z) throws EdgeNotMatchException { if (x + y <= z || x + z <= y || y + z <= x) { throw new EdgeNotMatchException("这不是三角形"); } else { System.out.println("这是个三角形"); } } } class TriangleDemo { public static void main(String[] args) { // 构造三角形 Triangle t1 = new Triangle(); // 设定三条边,找出异常 try { t1.setEdgea(4); t1.setEdgeb(5); t1.setEdgec(3); t1.Checking(t1.getEdgea(), t1.getEdgeb(), t1.getEdgec()); } catch (EdgeTooSmallException e) { System.out.println(e.getInfo()); System.exit(-1); } catch (EdgeNotMatchException e) { System.out.println(e.getInfo()); System.exit(-1); } System.out.println("边长为" + t1.getEdgea() + "," + t1.getEdgeb() + "," + t1.getEdgec()); } } 3.Person类中增加birthday属性,对setBirthday(int ,int , int )方法进行异常处理, 要求年有效、月有效、日有效、年月日指定的具体日期有效,对不同情况分别抛出不同的异常。 答: /** * Person类中增加birthday属性,对setBirthday(int ,int , int )方法进行异常处理, * 要求年有效、月有效、日有效、年月日指定的具体日期有效,对不同情况分别抛出不同的异常。 * */ public class Brithday { private String birthday; public String getBirthday() { return birthday; } public void setBirthday(int year, int month, int date) throws InvalidParamExcetion { // 判断年份 if (year < 1900 || year > 2016) { throw new InvalidParamExcetion("年份不合适,请传入1900年到2016年之间的年份"); } // 判断月份 if (month <= 0 || month > 12) { throw new InvalidParamExcetion("月份不合适,不存在" + month + "月"); } // 判断日期 if (date > 31 || date <= 0) { throw new InvalidParamExcetion("日期不合适,不存在" + date + "日"); } 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 + "日"); } System.out.println("生日为:" + year + "年" + month + "月 " + date + "日 "); } public static void main(String[] args) throws InvalidParamExcetion { Brithday person = new Brithday(); try { person.setBirthday(2015, 12, 5); person.setBirthday(2016, 2, 29); person.setBirthday(2015, 2, 29); // 因为上一句异常了,所以不会执行这一句 person.setBirthday(2015, 3, 5); } catch (InvalidParamExcetion e) { } } } /** * 非法参数异常 * */ class InvalidParamExcetion extends Exception { public InvalidParamExcetion(String msg) { super(msg); System.out.println(msg); } } 4.将类定义到指定的包下。com.it18zhang,编译之后,打成jar文件。 答: 打包java库文件。 [将类路径下的类打成jar文件] jar cvf myjar.jar -C classes/ . jar cvfe myjar.jar com.it18zhang.A -C classes/ .//e指定的入口点. [使用java -jar参数来运行程序] java -jar myjar.jar//执行jar文件 java -jar myjar.jarcom.it18zhang.A//执行jar文件指定入口点。 5.相互之间使用jar包,放置cp下,对class进行重用。 答:答案略 6.设计程序,考查修饰符。public -> protected -> default -> private(选做题) 答: package com.it18zhang.job.demo; public class Person { protected String protectName; public void method_public() { System.out.println("Person method_public"); } protected void method_protect(){ System.out.println("Person method_protect"); } void method_defult(){ System.out.println("Person method_defult"); } private void method_private(){ System.out.println("Person method_private"); } } package com.it18zhang.job.demo; public class People { public static void main(String[] args) { System.out.println("同包中的类修饰符权限测试"); Person person = new Person(); person.method_public(); person.method_protect(); person.method_defult(); //无法调用private //person.method_private(); } } package com.it18zhang.job.demo2; import com.it18zhang.job.demo.Person; public class Student extends Person{ public static void main(String[] args) { System.out.println("子类修饰符权限测试"); Student student = new Student(); student.method_public(); student.method_protect(); //无法调用defult、private //student.method_private(); //student.method_defult(); } } package com.it18zhang.job.demo2; import com.it18zhang.job.demo.Person; public class Other { public static void main(String[] args) { System.out.println("其他包中类修饰符权限测试"); Person person = new Person(); person.method_public(); //无法调用其他包中类的protect,default和private方法 //person.method_protect(); //person.method_defult(); //person.method_private(); } }
以上是关于IT十八掌第七天总结(含作业)的主要内容,如果未能解决你的问题,请参考以下文章