1. fda
  2. dfa
  3. 第三题u
    package net.mindview.typeinfo.test4;import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;abstract class Shape {void draw(){/** 重点在这里: * this指代的是实例对象,由于使用+连接字符串, 会自动调用对象的toString()方法.*/System.out.println(this + ".draw()");}public abstract String toString();
    }class Circle extends Shape{@Overridepublic String toString() {return "Circle";}
    }class Square extends Shape{@Overridepublic String toString() {return "Square";}
    }class Triangle extends Shape{@Overridepublic String toString() {return "Triangle";}
    }//菱形
    class Rhomboid extends Shape{@Overridepublic String toString() {return "Rhomboid";}
    }public class Shapes {public static void main(String[] args) {List<Shape> shapes = new ArrayList<Shape>(Arrays.asList(new Circle(), new Square(), new Triangle(), new Rhomboid()));for(Shape shape:shapes){shape.draw();}for(int i=0;i<shapes.size(); i++){Shape shape = shapes.get(i);if(i == 3){Rhomboid r = (Rhomboid)shape;Circle c = (Circle)shape;}}}}

    运行结果:

    Circle.draw()
    Square.draw()
    Exception in thread "main" Triangle.draw()
    Rhomboid.draw()
    java.lang.ClassCastException: net.mindview.typeinfo.test4.Rhomboid cannot be cast to net.mindview.typeinfo.test4.Circleat net.mindview.typeinfo.test4.Shapes.main(Shapes.java:63)

    不可以向下转型到Circle

  4. 第四题

    package net.mindview.typeinfo.test4;import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;abstract class Shape {void draw(){/** 重点在这里: * this指代的是实例对象,由于使用+连接字符串, 会自动调用对象的toString()方法.*/System.out.println(this + ".draw()");}public abstract String toString();
    }class Circle extends Shape{@Overridepublic String toString() {return "Circle";}
    }class Square extends Shape{@Overridepublic String toString() {return "Square";}
    }class Triangle extends Shape{@Overridepublic String toString() {return "Triangle";}
    }//菱形
    class Rhomboid extends Shape{@Overridepublic String toString() {return "Rhomboid";}
    }public class Shapes {public static void main(String[] args) {List<Shape> shapes = new ArrayList<Shape>(Arrays.asList(new Circle(), new Square(), new Triangle(), new Rhomboid()));for(Shape shape:shapes){shape.draw();}for(int i=0;i<shapes.size(); i++){Shape shape = shapes.get(i);if(i == 3){//添加instanceof判断if (shape instanceof Rhomboid){Rhomboid r = (Rhomboid)shape;}if(shape instanceof Circle){Circle c = (Circle)shape;}}}}}

    使用Class.newInstance方法,必须有一个无参构造方法

  5. 第五题:
    package net.mindview.typeinfo;import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;abstract class Shape {void draw(){/** 重点在这里: * this指代的是实例对象,由于使用+连接字符串, 会自动调用对象的toString()方法.*/System.out.println(this + ".draw()");}void rotate(){Class<? extends Shape> clazz = this.getClass();if(!clazz.getSimpleName().equals("Circle")){System.out.println("旋转"+ this);}else{System.out.println(this+"不需要旋转");}}public abstract String toString();
    }class Circle extends Shape{@Overridepublic String toString() {return "Circle";}
    }class Square extends Shape{@Overridepublic String toString() {return "Square";}
    }class Triangle extends Shape{@Overridepublic String toString() {return "Triangle";}
    }//菱形
    class Rhomboid extends Shape{@Overridepublic String toString() {return "Rhomboid";}
    }public class Shapes {public static void main(String[] args) {List<Shape> shapes = new ArrayList<Shape>(Arrays.asList(new Circle(), new Square(), new Triangle(), new Rhomboid()));for(Shape shape:shapes){shape.draw();shape.rotate();}/*for(int i=0;i<shapes.size(); i++){Shape shape = shapes.get(i);if(i == 3){Rhomboid r = (Rhomboid)shape;Circle c = (Circle)shape;}}*/}}

  6. 第七题
    package net.mindview.typeinfo.test8;import java.util.HashSet;
    import java.util.Set;interface A {}
    interface B {}
    interface C {}class D implements B{private int di=0;private String dname="";static{System.out.println("this is D");}
    }class E extends D implements A, B, C{private int ei=0;private String ename="";static{System.out.println("this is E");}
    }class F extends E implements A {private int fi=0;private String fname="";static{System.out.println("this is F");}
    }
    /*** 接受任意对象作为参数, 递归打印出该对象继承体系中所有的的类.* 包括继承的父类, 和实现的接口* * 分析: 一个类智能继承一个父类, 可以实现多个接口.* 父类可以继承一个类,实现多个接口. 实现的接口可能和子类重复, 因此需要去重.* 递归实现* @author samsung**/
    class G {public void printSuperClass(Class c){if(c == null) return ;System.out.println(c.getName());//得到这个类的接口Class[] interfaces = c.getInterfaces();for(Class interfaceClass:interfaces){printSuperClass(interfaceClass);}printSuperClass(c.getSuperclass());}
    }public class Test8 {public static void main(String[] args) {G g = new G();g.printSuperClass(F.class);}
    }

    运行结果:

    net.mindview.typeinfo.test8.F
    net.mindview.typeinfo.test8.A
    net.mindview.typeinfo.test8.E
    net.mindview.typeinfo.test8.A
    net.mindview.typeinfo.test8.B
    net.mindview.typeinfo.test8.C
    net.mindview.typeinfo.test8.D
    net.mindview.typeinfo.test8.B
    java.lang.Object

  7. 第八题
    package net.mindview.typeinfo.test8;interface A {}
    interface B {}
    interface C {}class D {static{System.out.println("this is D");}
    }class E extends D implements A, B, C{static{System.out.println("this is E");}
    }class F extends E {static{System.out.println("this is F");}
    }class G {public void printSuperClass(Class c){Class upClass = c.getSuperclass();try {System.out.println(upClass.newInstance());} catch (InstantiationException e) {System.out.println("实例化Instance 失败");System.exit(1);} catch (IllegalAccessException e) {System.out.println("实例化Instance 失败");System.exit(1);}if(upClass.getSuperclass() != null ){printSuperClass(upClass);}}
    }public class Test8 {public static void main(String[] args) {G g = new G();g.printSuperClass(F.class);}
    }

    运行结果:

    this is D
    this is E
    net.mindview.typeinfo.test8.E@17cb0a16
    net.mindview.typeinfo.test8.D@1303368e
    java.lang.Object@37f2ae62

  8. 第九题
    package net.mindview.typeinfo.test9;import java.lang.reflect.Field;interface A {}
    interface B {}
    interface C {}class D {public int i=0;public String name="";static{System.out.println("this is D");}
    }class E extends D implements A, B, C{public int i=0;public String name="";static{System.out.println("this is E");}
    }class F extends E {public int i=0;public String name="";static{System.out.println("this is F");}
    }class G {public void printSuperClass(Class c){Class upClass = c.getSuperclass();try {//获取类中的字段Field[] fs = upClass.getDeclaredFields();System.out.println(fs.length);for(Field f:fs){//打印字段名System.out.println(f.getName());//获取字段值Object value = upClass.getDeclaredField(f.getName());System.out.println(value);}} catch (Exception e1) {e1.printStackTrace();}try {System.out.println(upClass.newInstance());} catch (InstantiationException e) {System.out.println("实例化Instance 失败");System.exit(1);} catch (IllegalAccessException e) {System.out.println("实例化Instance 失败");System.exit(1);}if(upClass.getSuperclass() != null ){printSuperClass(upClass);}}
    }public class Test9 {public static void main(String[] args) {G g = new G();g.printSuperClass(F.class);}
    }

    运行结果:

    2
    i
    public int net.mindview.typeinfo.test9.E.i
    name
    public java.lang.String net.mindview.typeinfo.test9.E.name
    this is D
    this is E
    net.mindview.typeinfo.test9.E@1440578d
    2
    i
    public int net.mindview.typeinfo.test9.D.i
    name
    public java.lang.String net.mindview.typeinfo.test9.D.name
    net.mindview.typeinfo.test9.D@26f04d94
    0
    java.lang.Object@38a3c5b6

  9. 第十题
    package net.mindview.typeinfo.test10;
    class Pot{}
    public class  Test10 {public static void judgeType(Object c){Class arrType = c.getClass().getComponentType();System.out.println(arrType.getName());}public static void main(String[] args) {judgeType(new char[10]);judgeType(new String[10]);judgeType(new long[10]);judgeType(new boolean[10]);judgeType(new Pot[10]);}}

    运行结果:

    char
    java.lang.String
    long
    boolean
    net.mindview.typeinfo.test10.Pot

  10. f
  11. asf
  12. a
  13. 第十四题
    package net.mindview.typeinfo.test14;import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.Random;import net.mindview.typeinfo.factory.Factory;/***  部件类*  *  比如: 有过滤器部件, 皮带部件等. *  空气净化器中需要有过滤器部件, 因此要有一个制造空气净化器的过滤器的工厂*  汽车尾气净化器也需要有过滤器部件, 因此需要一个制造汽车尾气的过滤器的工厂*  *  皮带*  车轮需要皮带, 因此需要一个制造车轮的皮带的工厂* @author samsung**/
    class Part{@Overridepublic String toString() {return this.getClass().getSimpleName();}//目前已注册的部件工厂static List<String> partNames = Arrays.asList("net.mindview.typeinfo.test14.FuelFilter","net.mindview.typeinfo.test14.AirFilter","net.mindview.typeinfo.test14.CabinFilter","net.mindview.typeinfo.test14.OilFilter","net.mindview.typeinfo.test14.FanBelt","net.mindview.typeinfo.test14.GeneratorBelt","net.mindview.typeinfo.test14.PowerSteeringBelt");static{}private static Random rand = new Random(47);//随机得到一个已注册的部件工厂, 并制造部件public static Part createRandom(){int n = rand.nextInt(partNames.size());try {return (Part) Class.forName(partNames.get(n)).newInstance();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}return null;}
    }//过滤器部件
    class Filter extends Part {}//燃料过滤器部件
    class FuelFilter extends Filter {public static class Factory implements net.mindview.typeinfo.factory.Factory<FuelFilter>{@Overridepublic FuelFilter create() {return new FuelFilter();}}
    }//空气净化器部件
    class AirFilter extends Filter {public static class Factory implements net.mindview.typeinfo.factory.Factory<AirFilter>{@Overridepublic AirFilter create() {return new AirFilter();}}
    }//机舱空气过滤器部件
    class CabinFilter extends Filter {public static class Factory implements net.mindview.typeinfo.factory.Factory<CabinFilter>{@Overridepublic CabinFilter create() {return new CabinFilter();}}
    }//燃油过滤器部件
    class OilFilter extends Filter {public static class Factory implements net.mindview.typeinfo.factory.Factory<OilFilter>{@Overridepublic OilFilter create() {return new OilFilter();}}
    }//皮带部件
    class Belt extends Part{}//风扇皮带部件
    class FanBelt extends Belt {public static class Factory implements net.mindview.typeinfo.factory.Factory<FanBelt>{@Overridepublic FanBelt create() {return new FanBelt();}}
    }//发动机皮带部件
    class GeneratorBelt extends Belt {public static class Factory implements net.mindview.typeinfo.factory.Factory<GeneratorBelt>{@Overridepublic GeneratorBelt create() {return new GeneratorBelt();}}
    }//转向动力装置皮带部件
    class PowerSteeringBelt extends Belt {public static class Factory implements net.mindview.typeinfo.factory.Factory<PowerSteeringBelt>{@Overridepublic PowerSteeringBelt create() {return new PowerSteeringBelt();}}
    }/*** 查询目前已注册的工厂类* @author samsung**/
    public class RegisteredFactories {public static void main(String[] args) {for(int i=0;i<10;i++){System.out.println(Part.createRandom());}}}

  14. 第十五题: 内容太多, 直接参考demo
  15. af
  16. a
  17. 第十八题:
    package net.mindview.typeinfo;import java.lang.reflect.Constructor;
    import java.lang.reflect.Method;
    import java.util.regex.Pattern;public class ShowMethods {private ShowMethods(){}private static String usage = ""+ "usage:\n"+ "ShowMethods qualified.class.name\n"+ "To show all methods in class or:\n"+ "ShowMethods qualified.class.name. word\n"+ "To search for methodds invoiving 'word'";private static Pattern p = Pattern.compile("\\w+\\.");public static void main(String[] args) {if(args.length<1){System.out.println(usage);System.exit(1);}int lines = 0; try {Class<?> c = Class.forName(args[0]);//getMethods获取的是整个继承树中所有的方法Method[] methods = c.getMethods();//获取已有的构造器Constructor[] ctors = c.getConstructors();if(args.length == 1){//打印所有继承树中的方法名for(Method method: methods){System.out.println(p.matcher(method.toString()).replaceAll(""));}//打印全部构造器for(Constructor ctor: ctors){System.out.println(p.matcher(ctor.toString()).replaceAll(""));}lines = methods.length + ctors.length;}else {//打印指定类中的方法for(Method method: methods){if(method.toString().indexOf(args[1]) != -1){System.out.println(p.matcher(method.toString()).replaceAll(""));lines++;}}//打印构造器for(Constructor ctor :ctors){if(ctor.toString().indexOf(args[1])!=-1){System.out.println(p.matcher(ctor.toString()).replaceAll(""));lines++;}}}} catch (ClassNotFoundException e) {e.printStackTrace();}}}

  18. af
  19. a
  20. f
  21. af
  22. a
  23. fa
  24. f

转载于:https://www.cnblogs.com/ITPower/p/8664944.html

java编程思想第四版第十四章 类型信息习题相关推荐

  1. Java编程思想第五版(On Java8)(四)-运算符

    文章目录 开始使用 优先级 赋值 方法调用中的别名现象 算术运算符 一元加减运算符 递增和递减 关系运算符 测试对象等价 逻辑运算符 短路 字面值常量 下划线 指数计数法 位运算符 移位运算符 三元运 ...

  2. 《JAVA编程思想》学习笔记:第8章(多态)

    目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章:多 ...

  3. 《JAVA编程思想》学习笔记:第16章(数组)

    目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章:多 ...

  4. 《汇编语言》王爽(第四版) 第十六章 实验16

    文章目录 前言 一.实验任务 二.思路分析 1.程序框架 2.设置前景色 3.设置背景色 三.最终成果 1.完整代码 2.效果图 总结 前言 本文是王爽老师<汇编语言>(第四版) 第十六章 ...

  5. 《JAVA编程思想》学习笔记:第1-4章(Java概述)

    全书目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章 ...

  6. 《JAVA编程思想》学习笔记:第21章(并发)

    目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章:多 ...

  7. 《JAVA编程思想》学习笔记:第19章(枚举)

    目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章:多 ...

  8. 《汇编语言》王爽(第四版) 第十二章 实验12

    文章目录 前言 一.思路分析 1.安装 2.设置中断向量 3.do0程序 4.测试 5.优化 二.最终成果 1.完整代码 2.效果图 总结 前言 本文是王爽老师<汇编语言>(第四版) 第十 ...

  9. 《汇编语言》王爽(第四版) 第十四章 检测点及实验14

    文章目录 目录 前言 一.检测点 1.检测点14.1 (1)检测点14.1.(1) (2)检测点14.1.(2) 2.检测点14.2 (1)实验任务 (2)实现代码 二.实验14 访问CMOS RAM ...

  10. java 四舍五入_《JAVA编程思想》5分钟速成:1-4章:概述

    前言: 1.面向对象的特征有哪些方面? 2.Math.round(11.5) 等于多少? Math.round(-11.5)等于多少? 3.float f=3.4;是否正确? 4.short s1 = ...

最新文章

  1. ubuntu 安装docker_Docker: 教程04 - (初始化安装之在 Ubuntu 安装Docker CE)
  2. Vue.js 由 1 到 2 的旅程 - (1)
  3. ftp java listfiles_Java FTPClient.listFiles()不能获取目录里的文件
  4. 【Linux】一步一步学Linux——help命令(16)
  5. 课堂经验值管理小程序_微信小程序怎么管理门店?
  6. [vue-cli]不用vue-cli,你自己有搭建过vue的开发环境吗?流程是什么?
  7. TensorFlow 实现深度神经网络 —— Denoising Autoencoder
  8. C++ STL front_inserter back_inserter inserter 插入型迭代器的正确打开方式
  9. matlab的基本使用
  10. 接口测试--接口基础概念、HTTP协议、接口测试风格、接口测试流程
  11. 计算机怎么取消用户密码,怎么取消电脑开机密码界面
  12. python爬去新浪微博_python 爬取新浪微博信息
  13. 《MATLAB 神经网络43个案例分析》:第3章 遗传算法优化BP神经网络——非线性函数拟合
  14. Eclipse中如何查看使用的JDK版本?
  15. 华为云服务器默认密码怎么修改,如何修改云服务器登陆密码
  16. 矩阵快速幂(51nod)
  17. Linux != Windows
  18. linux DD 读写硬盘测试
  19. 计算机专科升研究生英语看什么书,2021考研必知:计算机备考八大禁忌_考研英语黄皮书...
  20. 80后上什么大学重要吗?看看这些IT富豪吧

热门文章

  1. sklearn——AdaBoost应用
  2. 计算机应用基础课程编制标准,计算机应用基础课程标准.doc
  3. mysql把select结果存到变量中_mysql实例 select into保存到变量的例子
  4. cython python3_30倍!使用Cython加速Python代码
  5. 倩女幽魂7月20日服务器维护,倩女幽魂手游7月20日更新什么?倩女幽魂手游7月20日更新一览...
  6. 【Pytorch神经网络实战案例】01 CIFAR-10数据集:Pytorch使用GPU训练CNN模版-方法①
  7. LeetCode 2119. 反转两次的数字
  8. LeetCode 1140. 石子游戏 II(DP)*
  9. 程序员面试金典 - 面试题 05.01. 插入(位运算)
  10. LeetCode 475. 供暖器(双指针二分查找)