面向对象 详解方案

什么是面向对象 初始面向对象 方法回顾和加深 对象的创建与分析 面向对象三大特性 抽象类与接口 内部类及OOP实战 面向过程&面向对象面向过程思想步骤清晰简单

什么是面向对象

初始面向对象
方法回顾和加深
对象的创建与分析
面向对象三大特性
抽象类与接口
内部类及OOP实战

面向过程&面向对象

  • 面向过程思想

    1. 步骤清晰简单,第一步做什么,第二部做什么....

    2. 面对过程适合处理一些较为简单的问题

面向对象思想

  • 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。

  • 面向对象适合处理复杂的问题,适合处理需要多人协作的问题!

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

什么是面向对象

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

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

  • 抽象

  • 从认识论角度考虑是先有对象后有类,对象,是具体的事物。类,是抽象的,是对对象的抽象

  • 从代码运行角度考虑是先有类后有对象。类是对象的模版。

  • 三大特性:

    1. 封装

    2. 继承

    3. 多态

      package oop;

      import java.io.IOException;

      //Demo01 类
      public class Demo01 {
         //main 方法
         public static void main(String[] args) {

        }


         /**
          * 修饰符 返回值类型 方法名(...){
          *     //方法体
          *     return “hello,world”;
          * }
          */
         public String sayHello(){
             return "hello,world"; //return 结束方法,返回一个结果!
        }
         public int max(int a,int b){
             return a>b ? a : b;//三元运算符!
        }
            //数组下标越界: Arrayindexoutofbounds
           public void readFile(String file) throws IOException{

          }
         // public static void main(String[] args){...}
         //和类一起加载的
         //public static a(){
             //b();
        }
           //类实例化之后才存在
         //public void b(){

         //}
      //}

    回顾方法及加深

    方法的定义
    • 修饰符

    • 返回类型

    • break: 跳出switch,结束循环和return的区别

    • 方法名:注意规范就OK 见名知意

    • 参数列表:(参数类型,参数名)...

    • 异常抛出: 疑问,后面讲解

    • package oop;

      public class Demo02 {
         //静态方法 static
         public static void main(String[] args) {
             //实例化这个类 new
             //对象类型 对象名 = 对象组
             Student student = new Student();
             student.say();
            // new Student().say();
        }
         //非静态方法
      }

    方法的调用

    1. 静态方法 (加上 static)

    2. 非静态方法

    3. package oop;
       //学生类
      public class Student {
         //非静态方法
           public void  say(){
               System.out.println("学生说话了");
          }
      }
    4. 形参和实参

    5. package oop.dmeo01;

      public class Demo03 {
        public static void main(String[] args){
           //方法一, new Demo03().add(2,3); 非静态方法
            //方法二
           int add = Demo03.add(1,2);
            System.out.println(add);
        }

        public  static int add(int a ,int b){
            return a+b;
        }
      }
    6. 值传递和引用传递

    7. package oop.dmeo01;
      //引用传递:对象,本质还是值传递
      public class Demo05 {
         public static void main(String[] args) {

               Perosn perosn = new Perosn();
             System.out.println(perosn.name);
             Demo05.change(perosn);
             System.out.println(perosn.name);//杨志康
        }
         public static void change(Perosn perosn){
             perosn.name = "杨志康";
        }
      }
      //定义一个Perosn类,有一个属性:name
      class Perosn{
         String name; // null
      }
    8. package oop.dmeo01;

      public class Demo04 {
         public static void main(String[] args) {
             int a =1;
             System.out.println(a);//1

             Demo04.change(a);

             System.out.println(a); //1
        }
         //返回值为空
         public static void change(int a){
             a = 10;
        }
      }
    9. this关键字

       

    类与对象的关系

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

    • 动物、植物、手机、电脑...

    • Person类、Pet类、Car类等、这些都是用来描述/定义某一类具体事物应该具备的特点和行为

     

对是抽象概念的具体实例
  • 张三就是人的一个具体实例,张三家里的旺财就狗的一个具体实例。

  • 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念。

创建与初始化对象

  • 使用new关键字创建对象

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

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

    1. 必须和类的名字相同

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

构造器必须要掌握

package oop.Demo03;
//一个项目应该只存一个main方法
public class Application {

   public static void main(String[] args) {

       //类:抽象的,实例化
       //类实例化会返回一个自己的对象!
       //student 对象就是一个Student类的具体实例!

       Student kang = new Student();
       Student jia = new Student();

       kang.name  = "康";
       kang.age =23;

       System.out.println(kang.name);
       System.out.println(kang.age);

       jia.name= "佳";
       jia.age = 22;

       System.out.println(jia.name);
       System.out.println(jia.age);
  }

}

 

package oop.Demo03;
//学生类
public class Student {

   //属性:字段
   String name;
   int age;

   //方法
   public void study(){
       System.out.println(this.name+"在学习");
  }


}