零基础自学JAVASE Part7
时间:2021-06-02 14:17:00
收藏:0
阅读:0
前言
之前都是框架类的知识,记住了以后开始补充其中的血肉,相当于是丰富其中的细节信息
确实初看一遍面向对象还是简单,但是落到细节上还是要反复推敲思考的
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;
}
}
总结
面向对象和构造方法需要花费多一点的时间去理解,方便后面继续的深入
刚学完第一遍的时候感觉还是清楚的,后面的概念一多久容易记混
需要不断的复习和自己敲敲写写才可以
加油
评论(0)