前言
之前都是框架类的知识,记住了以后开始补充其中的血肉,相当于是丰富其中的细节信息
确实初看一遍面向对象还是简单,但是落到细节上还是要反复推敲思考的
1. main方法中的array(数组)
String [] arr :用来获取键盘录入的参数
在写好.java代码后,首先要命令行中运行 >javac 文件名.java 进行编译
然后再用 >java 文件名 运行
其实运行的后面还可以传入数组参数的
例如: java HelloWorld a b c
如果想在eclipse中的控制台利用main方法传入参数,右键->run as->run configurations->Arguments
2. 面向对象
2.1
面向对象概念: (万物皆对象)----- think In java , everything in an object 把现实中的事物抽象成由一系列属性和行为组成的结构体,每个结构体都有属于自 己的功能,在软件开发的过程中,通过对不同功能的结构体进行组合,完成整个软件功 能。且结构体可复用。 OO: object – oriented 面向对象 ooa: 面向对象的分析 ood: 面向对象的设计 oop: 面向对象的编程(program) 软件的生命周期: 需求分析 概要设计 详细设计 系统开发 系统测试 部署 运行和维护 2.2 三大特征 封装 继承 多态(抽象) 2.3 类和对象的关系 类: 一种 (引用)数据类型, 自定义的一种类型(修改class的名字可以在类名上直接修改,然后修复即可) 对象: 具体存在的事物,符合类的定义特征 类的定义: class 类名{ //属性, 变量 //方法 } 如何创建对象: 类名 对象名 = new 类名(); 给对象赋值: 对象名.属性 = 要赋的值; 例子:public class Student { String name; //属性-------变量(成员变量) char gender; double score; //行为--------方法 public void chuDuiXiang() { System.out.println("love cason"); } }
测试类中创建对象:
public class StudentDemo { public static void main(String[] args) { Student a = new Student(); System.out.println(a.score); a.name = "张三"; a.gender = '男'; a.score = 23.64; System.out.println(a.name); a.chuDuiXiang(); } }
提供一个练习题:
创建一个 Teacher 类,包含属性: 姓名,性别,年龄; 定义一个讲课的行为,和自我介绍的 方法(用于打印所有的属性值),创建三个老师对象创建到数组中.public class Teacher{ String name; int age; char gender; //成员方法里面:没有static修饰的方法 public void teach() { System.out.println("开始上课!"); } public void introduce() { System.out.println("我叫"+name+"今年"+age+"岁"); } }
测试:
public class TeacherDemo { public static void main(String[] args) { Teacher lisi = new Teacher(); lisi.name = "李四"; lisi.age = 20; Teacher wangwu = new Teacher(); wangwu.name = "王五"; wangwu.age = 22; Teacher zhaoliu = new Teacher(); zhaoliu.name = "赵六"; zhaoliu.age = 24; // //数组 // int[] arr = new int[3]; // arr[0] = 10; // arr[1] = 20; // 动态方法 Teacher[] arr1 = new Teacher[3]; arr1[0] = lisi; arr1[1] = wangwu; arr1[2] = zhaoliu; //静态 Teacher [] arr2 = new Teacher[] {lisi,wangwu,zhaoliu}; for (int i =0; i < arr1.length; i++) { Teacher teacher_now = arr1[i]; teacher_now.introduce(); System.out.println(teacher_now.name); } } }
2.4 内存分析 栈(stack): 方法的执行, 局部变量, 没有初始值 堆: new 出来的东西 有初始值,基本数据类型初始值就是默认值,引用数据类型初始值为 null 方法区: class 区: 所有字节码文件(.class 文件),类加载的时候会把相关字节码文件加载到 class 区中,同时把用 static 修饰的东西存入到静态区 static 区: 用 static 修饰的东西
2.5 成员变量和局部变量
成员变量: 定义在类中方法外的变量,没有 static 修饰;存放在堆内存中,有初始值;随着对象的 产生而产生,随着对象的消失而消失 局部变量: 定义在方法中或者是方法的参数列表上的变量;存放在栈内存中,没有初始值;随 着方法的调用而产生,随着方法的结束而消失 2.6 匿名对象 匿名对象: 没有名字的对象 Teacher t = new Teacher();//这是有名字的对象,对象名叫 t t.teach();//调用 teach 方法 new Teacher();// 这就叫匿名对象 //匿名对象调用方法 new Teacher().teach(); 2.7 形参和实参 在之前的java复习01中有提到自己的理解。 形参: 定义方法时方法参数列表上的变量 实参: 调用方法时传进去的具体值; 注意: 基本数据类型做参数形参的改变不影响实参的值 引用数据类型做参数,形参的改变影响实参的值(String 和包装类除外) 2.8 封装 封装概述: 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。 好处: 隐藏实现细节,提供公共的访问方式 提高了代码的复用性 提高安全性。 封装原则: 将不需要对外提供的内容都隐藏起来。 把属性隐藏,提供公共方法对其访问。 实现封装的步骤: 成员变量私有化:用 private 修饰成员变量: 权限修饰符: public: 修饰类,方法,变量;可在本项目中访问,跨包需要导包 (default): 修饰类,方法,变量 ,什么都不加, 只能在本包中访问 private: 修饰方法,变量;被 private 修饰的方法和变量只能在本类中访问 提供 get 和 set 例子:public class Mobile { private String brand; private String type; private double price; private String color; // 品牌方法 public void setBrand(String brand) { this.brand = brand; } public String getBrand() { return brand; } // 型号 public void setType(String type) { this.type = type; } public String getType() { return type; } // 价格 public void setPrice(double price) { this.price = price; } public double getPrice() { return price; } // 颜色 public void setColor(String color) { this.color = color; } public String getColor() { return color; } // public void introduce() { System.out.println("这个手机的品牌是:" + brand + "\n" + "这个手机的价格是:" + price + "\n"); } }
注:this 是指当局部变量和成员变量重名的时候,加上this加以区分,this指代的是成员变量。
2.9 构造方法 构造方法,也叫构造器(Constructor), 是类中比较特殊的一种方法 格式: 修饰符 类名(参数列表){ 方法体; } 注意事项 1. 方法名和类名相同 2. 没有返回值,连 void 都没有 3. 构造方法是可以重载的 4. 如果我们不在类中创建构造方法,那么系统会为我们自动生成无参数的构造方法; 如果我们在类中自己写了构造方法,那么系统则不再为我们生成 有参构造方法和无参构造方法:public class YuanGong { private String name; private double age; private String job; private Double salary; // 有参构造方法 public YuanGong(String name, double age, String job, Double salary) { this.name = name; this.age = age; this.job = job; this.salary = salary; } //无参构造方法 public YuanGong() { }
// 姓名 public void setName(String name) { this.name = name; } public String getName() { return name; } // 年龄 public void setAge(double age) { this.age = age; } public Double getAge() { return age; } // 工作 public void setJob(String job) { this.job = job; } public String getJob() { return job; } // 薪水 public void setSalary(Double salary) { this.salary = salary; } public Double getSalary() { return salary; } public void showinfo() { System.out.println("员工:" + name); } }
2.10 总结组件
成员变量 静态变量 局部变量 成员方法 静态方法 构造方法
2.11 赋值
1) 对象名.属性名 = 要赋的值
Teacher t = new Teacher(); t.name = “zhang san”; 2) 使用 set 方法: t.setName(“李四”); 3) 使用构造方法 Teacher t = new Teacher(“赵六”,19); class Teacher{ public Teacher(String name,int age){ this.name = name; this.age = age; } }
总结
面向对象和构造方法需要花费多一点的时间去理解,方便后面继续的深入
刚学完第一遍的时候感觉还是清楚的,后面的概念一多久容易记混
需要不断的复习和自己敲敲写写才可以
加油