面向对象.

面向过程&面向对象

  • 对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理

什么是面向对象

  • 面向对象编程(Object-Oriend Programming,OOP)

  • 面向对象的编程的本质就是:以类的方式组织代码,以对象的形式封装数据

  • 抽象

  • 三大特性

    • 封装

    • 继承

    • 多态

回顾方法及加深

方法的定义

  • 修饰符

  • 返回值

package com.baidu.opp1;
​
import java.io.IOException;
​
//O1: 类
public class O1 {
​
    //main 方法
    public static void main(String[] args) {
​
    }
​
    /*
    修饰符  返回值类型  方法名(.....){
      //方法体
      return 返回值;
      }
     */
​
    //结束方法,返回一个结果
    public String sayHello(){
        return "Hello World";
    }
    public void print(){
        return;
    }
    public int max(int a,int b){
        return a>b?a:b;//三元运算符!
    }
​
    //数组下标越界异常:Arrayindexoutofbounds
​
    public void readFile(String file) throws IOException{
​
    }
}
  • break和return的区别

  • 方法名:注意规范!见名知意

  • 参数列表

  • 异常抛出:

     public void readFile(String file) throws IOException{
    ​
     }

方法的调用

  • 静态方法

    package com.baidu.opp1;
    ​
    public class O2 {
        public static void main(String[] args) {
    ​
            //实例化这个类 new
            //对象类型  对象名=对象值;
            Student student=new Student();
            student.say();
        }
    ​
        //和类一起加载
        public void a(){
            b();
        }
        //类实例化之后才存在
        public void b(){
    ​
        }
    }

  • 非静态方法

package com.baidu.opp1;
​
//学生类
public class Student {
​
​
    //非静态方法
    public  void say(){
        System.out.println("学生说话了");
    }
}
​
  • 形参与实参

package com.baidu.opp1;
​
public class O3 {
    public static void main(String[] args) {
​
        //实际参数和形式参数的类型要对应
        int add = O3.add(1,2);
        System.out.println(add);
    }
​
​
    public static int add(int a,int b){
        return a+b;
    }
}
  • 值传递和引用传递

    • 值传递

      package com.baidu.opp1;
      ​
      ​
      //值传递
      public class O4 {
          public static void main(String[] args) {
      ​
              int a=1;
              System.out.println(a);
              O4.change(a);
              System.out.println(a);
          }
          public static void change(int a){
              a=10;
          }
      ​
      }
    • 引用传递

      package com.baidu.opp1;
      ​
      ​
      //引用传递:对象,本质还是值传递
      public class O5 {
          public static void main(String[] args) {
      ​
              Person person = new Person();
              System.out.println(person.name);//null
      ​
              O5.change(person);
              System.out.println(person.name);
          }
          public static void change(Person person){
              //perosn是一个对象;指向-->Person person=new Person();这是一个具体的人,可以改变属性!
              person.name="猫";
          }
      }
      ​
      ​
      //定义了一个Person类,有一个属性:name
      class Person{
          String name;
      }

类与对象的关系

  • 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表一个具体的事物

  • 对象是抽象概念的具体实例

创建与初始化对象

  • 使用 new关键字创建对象

  • 使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用

package com.baidu.opp2;
​
//学生类
public class Student {
​
    //属性;字段
    String name;
    int age;
​
    //方法
    public void study(){
        System.out.println(this.name+"在学习");
    }
}
package com.baidu.opp2;
​
​
//一个项目应该只有一个main方法
public class App {
    public static void main(String[] args) {
        //类:抽象的,实例化
        //类实例化后会返回一个自己的对象!
        //student对象是一个Student类的具体实例
        Student xiaom = new Student();
        Student xaioh = new Student();
​
        xiaom.name="小米";
        xiaom.age=12;
​
        System.out.println(xiaom.name);
        System.out.println(xiaom.age);
​
    }
}

构造器详解

  • 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点

    • 必须和类名相同

    • 必须没有返回类型,也不能写void

package opp.opp2;
​
public class Person {
​
​
    //一个类型即使什么都不写,它也会存在一个方法
    //显示的定义构造器
​
    String name;
​
​
    /*
    1.使用new关键字,本质是在调用构造器
    2.用来初始化
     */
    public Person(){
​
        this.name="mao";
    }
​
    //有参构造:一旦定义了有参构造,无参就必须显示定义
    public Person(String name){
​
        this.name=name;
    }
​
​
}
/*
   public static void main(String[] args) {
        Person person = new Person("xai");
        System.out.println(person.name);
​
      }
​
      构造器:
        1.和类名相同
        2.没有返回值
      作用:
        1.new本质在调用构造方法
        2.初始化对象的值
      注意点:
        1.定义有参构造之后,如果想使用无参构造,显示定义一个无参的构造
​
        构造快捷键:Alt+Insert
​
 */

创建对象内存分析

package opp.opp3;
​
public class Pet {
    String name;
    int age;
​
    public void shout(){
        System.out.println("叫了一声");
    }
}
package opp.opp3;
​
public class App {
    public static void main(String[] args) {
        Pet dog = new Pet();
        dog.name="旺财";
        dog.age=4;
        dog.shout();
​
        System.out.println(dog.age);
        System.out.println(dog.name);
​
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值