栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

面向对象OOP

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面向对象OOP

面向对象编程

Java的核心思想就是OOP

面向过程&面向对象
  • 面向过程思想:
    • 步骤清晰简单,第一步做什么,第二步做什么…
    • 面对过程合适处理一些较为简单的问题
  • 面向对象思想:
    • 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索
    • 面向对象适合处理复杂的问题,适合处理需要多人协作的问题!
  • 对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理
什么是面向对象
  • 面向对象编程(Object-Oriented Programming ,OOP)
  • 面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据
  • 抽象
  • 三大特性:
    • 封装
    • 继承
    • 多态
  • 从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象
  • 从代码运行角度考虑是先有类后有对象。类是对象的模板。
回顾方法及加深
  • 方法的定义

    • 修饰符
    • 返回类型
    • break:跳出switch,结束循环;return 结束方法 返回一个结果
    • 方法名:注意规范 见名知意
    • 参数列表:(参数类型,参数名)…
    • 异常的抛出:
  • 方法的调用(递归)

    • 静态方法

    • 非静态方法

      • package com.oop.Demo01;
        
        public class Demo02 {
        
            public static void main(String[] args) {
                //调用静态方法可以直接使用类名
                Student.say();
                //非静态方法,实例化这个类 new
                //对象类型  对象名 = 对象值
                Student student = new Student();
                student.say1();
            }
        
            public void a(){
                b();//当都为非静态时可以直接调用b
            }
            public void b(){}
        
            //a1为静态方法时无法调用b1非静态方法
            //static 是和类一起加载的
            public static void a1(){}
            //类实例化之后,才存在
            public void b1(){}
        }
        
        
        • package com.oop.Demo01;
          //学生类
          public class Student {
             //静态方法
              public static void say(){
                  System.out.println("学生说话了");
              }
              public void say1(){
                  System.out.println("学生被点起来了");
              }
          }
          
          
    • 形参和实参

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

      • 值传递

        • package com.oop.Demo01;
          
          //值传递
          public class Demo04 {
              public static void main(String[] args) {
                  int a = 1;
                  System.out.println(a);
                  Demo04.change(a);
                  System.out.println(a);
              }
              //返回值为空
              public static void change(int a){
                  a=10;
              }
          }
          
          

          运行结果:

          1
          1
          
      • 引导传递

        • package com.oop.Demo01;
          
          //引导传递:对象,本质还是值传递
          public class Demo05 {
              public static void main(String[] args) {
                  Perosn perosn = new Perosn();
          
                  System.out.println(perosn.name);//null
          
                  Demo05.change(perosn);
                  System.out.println(perosn.name);//null
          
              }
              //定义了一个perosn类,有一个属性:name
              static class Perosn{
                  String name;//null
              }
              public static void change(Perosn person){
                  //perosn是一个对象:指向的 ---》Perosn perosn = new Perosn(); 这是一个具体的人,可以改变属性!
                  person.name="挽姬";
              }
          }
          
          

          运行结果:

          null
          挽姬
          
    • this关键字

类与对象的关系
  • 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一具体的事物
    • 动物、植物、手机、电脑
    • Person类,Pet类、Cat类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为。

  • 对象是抽象概念的具体实例
    • 张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例
    • 能够体现出特点,展现出来功能的是具体的实例,而不是一个抽象的概念

我们可以将这些思想转换为代码实现!

创建与初始化对象
  • 使用new关键字创建对象
    • 使用new关键字的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。
    • 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的,并且构造器以下有两个特点:
      1. 必须和类的名字相同
      2. 必须没有返回类型,也不能写void
  • 构造器必须掌握!

  • 实例
package com.oop.Demo02;

//学生类
public class Student {
    //属性  字段
    String name;
    int age ;
    //方法
    public  void study(){
        System.out.println(this.name+"在学习");
    }

}
package com.oop.Demo02;

//一个项目应该只存在一个main方法
public class Application {

    public static void main(String[] args) {
        //类:抽象的,需要实例化
        //类实例化后会返回一个自己的对象!
        //student对象就是一个Student类的具体实例!
        Student student = new Student();
        Student student1 = new Student();
        student.name = "小明";
        student.age = 18;
        System.out.println(student.name);
        System.out.println(student.age);
        System.out.println(student1.name);
        System.out.println(student1.age);
    }

}

  • 运行结果
小明
18
null
0
构造器
package com.oop.Demo02;

//Java-----》class文件
public class Person {
    //一个类即使什么都不写,它也会存在一个方法
    //显示的定义的构造器

    String name;
    int age ;

    //重载
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //实例化初始值
    //1.使用new关键字,本质是在调用构造器
    public Person(){
        //无参构造
        //可以初始化一些信息
    }
    //有参构造:一旦定义了有参构造,无参构造必须显示定义
    public Person(String name){
        this.name=name;
    }
}


运行结果

挽姬
简单小结类与对象
package com.oop;

import com.oop.Demo03.Pet;

public class Application {
    public static void main(String[] args) {
        Pet dog = new Pet();
        dog.name="旺财";
        dog.age=3;
        dog.shout();
        System.out.println(dog.name);
        System.out.println(dog.age);
    }
}


运行结果

叫了一下
旺财
3
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996068.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号