第04章(面向对象——上)
1 /***************** 2 ***第四章面向对象(上) 3 *******知识点: 4 **************1.类和对象 5 ******************1.1 关键字 6 ******************1.2 定义 7 ******************1.3 使用 8 **************2.方法和属性 9 ******************2.1 关键字 10 ******************2.2 方法重载和重写 11 ******************2.3 方法参数传递 12 ******************2.4 成员属性和局部属性 13 **************3.隐藏和封装 14 ******************3.1 关键字 15 ******************3.2 概念定义 16 ******************3.3 访问权限 17 ******************3.4 package和import 18 **************4.构造器 19 ******************4.1 关键字 20 ******************4.2 概念 21 ******************4.3 定义 22 ******************4.4 使用 23 **************5.继承 24 ******************5.1 关键字 25 ******************5.2 定义 26 ******************5.3 使用 27 */ 28 import java.util.*; 29 public class test4{ 30 public static void main(String[] args){ 31 showDemo("1.类和对象"); 32 demoClassAndObject(); 33 34 showDemo("2.方法和属性"); 35 demoMethodAndField(); 36 37 showDemo("3.隐藏和封装"); 38 demoHideAndPackage(); 39 40 showDemo("4.构造器"); 41 demoConstructor(); 42 43 showDemo("5.继承和多态"); 44 demoExtend(); 45 } 46 47 /**1.类和对象**/ 48 public static void demoClassAndObject(){ 49 //1.1关键字 50 String[] s_Arr = {"class","new"}; 51 System.out.println("类和对象的关键字有:" + s_Arr[0] + "," + s_Arr[1]); 52 //1.2定义 53 String s_demo_class = "public class Person{ \r\n " 54 +" private int id; \r\n " 55 +" public void setId(int id) { \r\n" 56 +" this.id = id;\r\n" 57 +" }\r\n" 58 +"\r\n}"; 59 System.out.println("类定义:\r\n" + s_demo_class);//使用class关键字定义类 60 61 String s_demo_Object = " Pernon p = new Person();"; 62 System.out.println("对象定义:\r\n" + s_demo_Object);//使用new关键字定义该类对象 63 64 //1.3使用 65 //类是对象的模板。它定义了某类对象特有的属性和方法。 66 //对象是类的实例。它根据类定义的属性有属于自己的成员数据,并且可以通过相关的方法获取到该数据 67 String s_demo_UseFlow = "1.定义类的方法和属性 2.定义该类的对象 3.使用该对象调用相关操作方法"; 68 System.out.println("使用步骤:" + s_demo_UseFlow); 69 70 } 71 72 /**2.方法和属性**/ 73 public static void demoMethodAndField(){ 74 //2.1 概念 75 //方法 可以为类方法也可以为对象方法 类方法需用static修饰(后面再详细讲述两者的访问差异) 76 //属性 可以为类属性也可以为对象属性 类属性需用static修饰(后面再详细讲述两者的访问差异) 77 78 //2.2 方法重载和重写 79 //方法重载是以统一的方式处理不同类型数据的一种手段。 80 //多个同名函数同时存在,具有不同的参数个数/类型 或者 不同类型的返回值 81 System.out.println("Max方法重载1:" + Max(1) + ", Max方法重载2:" + Max(1,3) + ", Max方法重载3:" + Max(-1.5,-3.5)); 82 83 //方法重写 84 //方法重写以不同于父类的处理方式去处理子类特有的方式的一种手段 85 //比如B类继承A类,A类中有个play()方法。B类可以根据自己的特性重写实现play()方法 86 //此特性是实现多态的核心 87 88 //2.3 方法参数传递 89 //两种方式 90 //第一种传递基本数据(即参数是基本数据类型 四类八种) 91 //第二种传递引用数据(即参数为引用类型 如数组、对象等) 92 //不管哪一种方式都不能改变参数本身的数据(使用static关键字修饰的参数和方法除外 因为staitc是属于类的) 93 94 //2.4 成员属性和局部属性 95 //成员属性 针对对象本身(定义在类里面,static修饰除外。因为static修饰是属于类的成员变量,针对类本身) 96 //局部属性 针对调用者本身或者创建着本身(定义在方法里面) 97 //两者作用域也不一样 前者是于对象共存亡 后者是于方法共存亡 98 } 99 100 /**3.隐藏和封装**/ 101 public static void demoHideAndPackage(){ 102 //3.1 关键字 103 String[] s_demoHideAndPackage = {"public","protected","default","private"}; 104 System.out.println("隐藏和封装的关键字有:" + s_demoHideAndPackage[0] + "," 105 + s_demoHideAndPackage[1] + "," 106 + s_demoHideAndPackage[2] + "," 107 + s_demoHideAndPackage[3]); 108 109 //3.2 概念定义 110 //隐藏 将相关的信息封闭起来不对外公开 111 //封装 将对象的状态信息隐藏在对象内容中,不允许外部程序直接访问对象的内部信息, 112 // 但可以通过该类所提供的方法来实现对内部信息的操作和访问 113 //是面向对象编程的核心之一 114 115 //3.3 访问权限 116 //public 全局 - 子类 - 同包中 - 同类中 117 System.out.println("public访问权限:全局 - 子类 - 同包中 - 同类中"); 118 119 //protetcted 子类 - 同包中 - 同类中 120 System.out.println("protetcted访问权限:子类 - 同包中 - 同类中"); 121 122 //default(如果不加任何关键字修饰的話,java默认) 同包中 - 同类中 123 System.out.println("default访问权限:同包中 - 同类中"); 124 125 //private 同类中 126 System.out.println("private访问权限:同类中"); 127 //建议:一般情况下 方法使用public 属性使用private 128 129 //3.4 package和import 130 //package 生成包 131 System.out.println("package生成包语法: package + 包名(需注意全名且该行在页首)"); 132 133 //import 导入包 134 System.out.println("import生成包语法: import + 包名(需注意全名且该行在页首)"); 135 } 136 137 /**4.构造器**/ 138 public static void demoConstructor(){ 139 //4.1 关键字 140 String[] s_demoConstructor = {"this","super"}; 141 System.out.println("构造器的关键字有:" + s_demoConstructor[0]+ "," + s_demoConstructor[1]); 142 //4.2 概念 143 //构造器 一个特殊的方法 用于创建对象 144 //this关键字 引用当前对象 145 //super关键字 引用基类对象 146 //4.3 定义 147 String s_demoConstructor_str = "权限符 类名() {\r\n" 148 +" ...\r\n" 149 +"} //其中权限符通常为public"; 150 System.out.println("构造器定义:\r\n" + s_demoConstructor_str); 151 152 //4.4 使用 153 //注意: 154 // 假如一个类没有设置字定义构造器,那么编译器会默认一个无参构造器 155 // 假如定义了一个带参数的构造器没无参构造器时,那么将无法使用无参构造器 156 // 支持重载 157 // 子类构造器在调用时会先调用基类的构造器 158 159 System.out.println("构造器的使用:Person p = new Person();"); 160 } 161 162 /**5.继承**/ 163 public static void demoExtend(){ 164 //5.1 关键字 165 String[] s_demoExtendAndMultimodal = {"extends","implements"}; 166 System.out.println("继承和多态关键字有:" + s_demoExtendAndMultimodal[0]+ "," + s_demoExtendAndMultimodal[1]); 167 168 //5.2 定义 169 //extends 继承自基类(需注意java中只能继承一个基类) 170 //implements 实现某些接口(需注意java中可以实现多个接口) 171 // class B extends class A 172 System.out.println("继承基类语法定义:子类名(可以是接口) extends 基类名"); 173 // class B implements interface C 174 System.out.println("实现接口语法定义:子类名(可以是接口) implements 接口1,接口2....."); 175 176 //5.3 使用 177 //使用步骤:1.定义基类 2.定义子类继承父类 178 } 179 180 /* 181 *演示重载方法1 182 */ 183 public static int Max(int i){ 184 return i > 0 ? i : 0; 185 } 186 187 /* 188 *演示重载方法2 189 */ 190 public static int Max(int i1,int i2){ 191 return i1 > i2 ? i1 : i2; 192 } 193 194 /* 195 *演示重载方法3 196 */ 197 public static double Max(double d1,double d2){ 198 return d1 > d2 ? d1 : d2; 199 } 200 201 /* 202 * 抽取打印演示函数 用于打印演示功能提示 203 */ 204 public static void showDemo(String demoStr){ 205 System.out.println("演示:" + demoStr); 206 } 207 }