对于方法的修饰词,子类方法要比父类的方法范围更加的宽泛
对于方法的修饰词,子类方法要比父类的方法范围更加的宽泛。
父类为public,那么子类为private则出现错误。
之所以构造方法先运行父类再运行子类是因为构造方法是无法覆盖的。
以下范围依次由严到宽:
private :本类访问;
default :表示默认,不仅本类访问,而且是同包可见。
Protected:同包可见+不同包的子类可见
Public :表示所有的地方均可见。
1 package TomText; 2 import java.util.Scanner; 3 public class TomText_16 { 4 // 检测给定的字符串是否为数字 5 public boolean isNum(String str) { 6 boolean isnum = false; 7 if (str.matches("[0-9]+")) { 8 System.out.println("您输入的是数字。"); 9 isnum = true; 10 } else 11 System.out.println("您输入的不是数字!"); 12 return isnum; 13 } 14 // 检测给定的字符串是否含有字母,数字和下划线 15 public void hasSth(String str) { 16 boolean hasnum = false; 17 boolean haslet = false; 18 StringBuffer sb = new StringBuffer("您输入的字符串中"); 19 if (str.contains("_")) { 20 sb.append("含有‘_’,"); 21 } else 22 sb.append("不含有‘_’,"); 23 for (int i = 0; i < 10; i++) { 24 if (str.contains("" + i)) { 25 hasnum = true; 26 break; 27 } 28 } 29 for (char let = 'a'; let <= 'z'; let++) { 30 if (str.contains("" + let)) { 31 haslet = true; 32 break; 33 } 34 } 35 if (!haslet) { 36 for (char let = 'A'; let <= 'Z'; let++) { 37 if (str.contains("" + let)) { 38 haslet = true; 39 break; 40 } 41 } 42 } 43 if (hasnum) { 44 sb.append("含有数字,"); 45 } else { 46 sb.append("不含有数字,"); 47 } 48 if (haslet) { 49 sb.append("含有字母。"); 50 } else { 51 sb.append("不含有字母。"); 52 } 53 System.out.println(sb); 54 } 55 // 检测给定的字符串是否为有效的日期格式(日期格式:2008-12-15) 56 public boolean isdate(String str) { 57 boolean flag = false; 58 if (str.matches("^[0-9]{4}-[0-9]{2}-[0-9]{2}$")) { 59 flag = true; 60 System.out.println("您输入的是合法的日期。"); 61 } else 62 System.out.println("您输入的不是公合法的日期!"); 63 return flag; 64 } 65 // 检测给定的字符串是否为有效的身份证号码格式 66 public boolean isIdCard(String str) { 67 boolean flag = false; 68 if (str.length() == 18) { 69 if (str.matches("[0-9]{18}")) { 70 System.out.println("您输入的是合法的身份证号。"); 71 flag = true; 72 } else { 73 System.out.println("您输入的不是合法的身份证号!"); 74 } 75 } else if (str.length() == 21) { 76 if (str.matches("[0-9]{21}")) { 77 System.out.println("您输入的是合法的身份证号。"); 78 flag = true; 79 } else if (str.matches("[0-9]{20}x")) { 80 System.out.println("您输入的是合法的身份证号!"); 81 } else { 82 System.out.println("您输入的不是合法的身份证号!"); 83 } 84 } else { 85 System.out.println("您输入的不是合法的身份证号!"); 86 } 87 return flag; 88 } 89 // 返回一个随机的6位字符串(该字符串只含有数字和字母) 90 public void getradom() { 91 StringBuffer str = new StringBuffer(""); 92 String from = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; 93 for (int i = 0; i < 6; i++) { 94 int radom = (int) (from.length() * Math.random()); 95 str.append(from.charAt(radom)); 96 } 97 System.out.println(str); 98 } 99 /** 100 * @param args 101 */ 102 public static void main(String[] args) { 103 TomText_16 ot = new TomText_16(); 104 Scanner in = new Scanner(System.in); 105 System.out.println("请输入字符串,检查是否为数字:"); 106 String str = in.nextLine(); 107 ot.isNum(str); 108 System.out.println(); 109 System.out.println("请输入字符串,检查是否含有字母,数字和下划线:"); 110 String str1 = in.nextLine(); 111 ot.hasSth(str1); 112 System.out.println(); 113 System.out.println("请输入字符串,检查是否为有效的日期格式(日期格式:2008-12-15):"); 114 String str2 = in.nextLine(); 115 ot.isdate(str2); 116 System.out.println(); 117 System.out.println("请输入字符串,检测给定的字符串是否为有效的身份证号码格式:"); 118 String str3 = in.nextLine(); 119 ot.isIdCard(str3); 120 System.out.println(); 121 System.out.println("以下是随机得到的6位字符串:"); 122 ot.getradom(); 123 } 124 125 }