面向过程思想 线性 第一步做什么第二步做什么 简单的问题
面向对象思想 分类思维模式 首先解决问题分类 然后对分类进行单独思考 复杂的问题
面向对象 (OOP)
面向对象编辑本质 就是以类的方式组织代码,以对象的组织(封装)数据
抽象 三大特性 封装 继承 多态
从认识角度考虑先又对象后有类. 对象 具体事物 类 是抽象的,是对对象的抽象
从代码运行角度考虑 先有类后有对象 . 类是对象的模板.
回顾方法
方法的调用 静态非静态方法 形参与实参 值传递和引用传递
//main方法 public static void main(String[] args) { //ome01.say();//静态方法直接类名.方法名调用 //非静态 要实例化这个类 new Dome01 dome01=new Dome01(); dome01.say(); } //static 和类一起加载的 /*public static void a(){ b(); } //类 实例化之后才存在 public void b(){ a(); }*/ //修饰符 返回值类型 方法名 (){方法体 return返回值} public String str(){ return str(); } public int max(int i,int j){ return i>j?i:j; //三元运算符 }
public static void main(String[] args) { //实参和形参类型要对应 int add =Dome01.add(3,4); System.out.println(add); } public static int add(int a,int b){ return a+b; }
//值传递 输出为1 int a = 1; Dome02.zhichuan(a); // System.out.println(a); //引用传递 对象 本质还是值传递 Person person = new Person(); System.out.println(person.name); Dome02.change(person); System.out.println(person.name); } //void 返回值为空 public static void zhichuan(int a) { a = 10; } public static void change(Person person){ //person 是一个对象 指向 ----Person person = new Person(); person.name="向阳"; } } //定义一个person类 有一个属性 name class Person { String name;//默认值null }
创建于初始化对象
使用new关键字创建对象 除了分配内存空间之外,还会给创建好的对象进行默认初始化
及对类中构造器的调用 构造器也称为构造方法
package object; //学生类 一个类只有属性方法 public class Student { //属性 : 字段 String name;//默认null int age;//0 //方法 public void study(){ System.out.println(this.name+"在学习"); } }
package object; //一个项目应该只存在一个main方法 public class Dome { public static void main(String[] args) { //类是抽象的 需要实例化 //类实例化后会返回一个自己的对象 //student对象就是一个Student类的具体实例 Student student=new Student(); student.name="小明"; student.age=6; System.out.println(student.name); System.out.println(student.age); } }
构造器
方法的两个特点 1 必须和类的名字相同 2 必须没有返回类型 也不能写void
public class Student { //一个类即使什么都不写 他也存在一个方法 //显示的定义构造器 //实例化初始值 //1.无参使用new关键字 本质再调用构造器 //2. 用来初始化值 public Student() { } //有参构造 一旦有了有参构造 无参就必须显示定义 public Student(String name) { this.name = name; } //alt +insert 无参有参快捷方式
类与对象 总结
/* * 1.类与对象 类是一个模板 抽象 对象是一个具体的实例。 * 2.方法 定义和调用 * 3.对应的引用 * 引用类型 基本类型(8) * 对象是通过引用来操作的 栈---》堆 引用 指向对象的地址 * 4.属性 字段 Liled 成员变量 * 默认初始化 * 数字 0 0.0 char u0000 * boolean false 引用 null * 修饰符 属性类型 属性名 =属性值 * 5.对象的创建和使用 * 必须使用new关键字 ,构造器 * 6。类 静态的属性(属性) 动态的行为(方法) * */