面向对象01

面向过程&&面向对象

  • 面向过程思想

    • 步骤清晰简单

    • 面对过程时候处理一些较为简单问题

  • 面向对象思想

    • 物以类聚,分类的思维模式

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

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

 

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

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

  • 抽象

  • 三大特性:

    • 封装

    • 继承

    • 多态

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

  • 从代码编程角度考虑是先有类后有对象。类是对象的模板

 

回顾方法及加深

  • 方法的定义

    • 修饰符

    • 返回类型

    • break:跳出switch,结束循环;return:结束方法,返回一个结果

    • 方法名:规范、见名知意

    • 参数列表:(参数类型 参数名)(…)

    • 异常抛出

 package java_oop.demo01;
 
 import java.io.IOException;
 
 /**
  * @author IT_Jay
  * @date 2022/1/22 17:47
  */
 
 //Demo01 类
 public class Demo01 {
 
     //main 方法
     public static void main(String[] args) {
 
    }
 
     /*
     修饰符 返回值类型 方法名(。。。){
         //方法体
         return 返回值;
     }
      */
     //return 结束方法,返回一个结果!
     public String sayHello(){
         return "Hello World!";
    }
     public void print(){
         return;
    }
 
     public int max(int a,int b){
         return a>b ? a:b;       //如果a>b,返回a,否则返回b
    }
 
     //数组下标越界异常:ArrayIndexOutOfBounds
 
     //IO流异常
     public void readFile(String file) throws IOException{}
 }

 

  • 方法调用:递归

    • 静态方法

    • 非静态方法

     

     

     package java_oop.demo01;
     
     /**
      * @author IT_Jay
      * @date 2022/1/22 18:05
      */
     
     public class Demo02 {
         public static void main(String[] args) {
             //调用静态方法   static
             //类名.方法名
             Student.say();
     
     
             //调用非静态方法
             //实例化这个类   new
             //对象类型 对象名 = 对象值
             Student student = new Student();
             student.say1();
        }
     
         //和类一起加载
         public static void a(){
     //       b();   //此时会报错,若a()和b()都为(或都不是)static,则可这样写
        }
     
         //实例化后才存在
         public void b(){
     
        }
     }
     package java_oop.demo01;
     
     /**
      * @author IT_Jay
      * @date 2022/1/22 18:09
      */
     
     //学生类
     public class Student {
         //静态方法 static
         public static void say(){
             System.out.println("学生说话了。");
        }
     
         //非静态方法
         public void say1(){
             System.out.println("学生说话了!");
        }
     }

     

     

     

    • 形参和实参

     package java_oop.demo01;
     
     /**
      * @author IT_Jay
      * @date 2022/1/22 18:31
      */
     
     public class Demo03 {
         public static void main(String[] args) {
             Demo03 demo03 = new Demo03();
             //实际参数和形式参数的类型要对应
             System.out.println(demo03.add(1,2));    //实参
        }
     
         //形参
         public int add(int a,int b){
             return a+b;
        }
     }

     

     

     

    • 值传递和引用传递

     

     

    image-20220122185140476

     package java_oop.demo01;
     
     /**
      * @author IT_Jay
      * @date 2022/1/22 18:37
      */
     //值传递
     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;
        }
     }

     package java_oop.demo01;
     
     /**
      * @author IT_Jay
      * @date 2022/1/22 18:41
      */
     //引用传递:引用对象,本质还是值传递
     public class Demo05 {
         public static void main(String[] args) {
             Person person = new Person();
             System.out.println(person.name);    //null
     
             Demo05.cahnge(person);
             System.out.println(person.name);
        }
     
         public static void cahnge(Person person){
             //person是一个对象,指向----》Person person = new Person();这是一个具体的人,可以改变属性!
             person.name="IT_Jay";
        }
     }
     
     //定义一个Person类,有一个属性name
     class Person{
         String name;
     }

     

    • this关键字

posted @ 2022-01-22 19:05  作困兽之斗  阅读(26)  评论(0)    收藏  举报