day19 面向对象编程

面向过程&面向对象

  • 面相过程思想 1.步骤清晰简单,第一步做什么,第二部做什么....

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

  • 面向对象思想 1.物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行独立思考。最后,才对某个分类下的细节进行面向过程的思索。
  • 面向对象适合处理复杂的问题,适合处理需要多人协作的问题!

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

什么是面向对象

  • 面向对象编程(Object-Oriented Programming,OOP)
  • 面向对象编程的本质就是:以类的方式组织代码,以对象的方式(封装)数据。
  • 抽象
  • 三大特征:
    1. 封装
    2. 继承
    3. 多态
  • 从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象
  • 从代码运行角度考虑是先有类后有对象。类是对象的模板。

回顾方法及加深

  • 方法的定义
  1. 修饰符
  2. 返回类型
  3. break:跳出switch,结束循环和ruturn的区别
  4. 方法名:注意规范 见名知意
  5. 参数列表:参数类型,参数名
  6. 异常抛出:疑问,后面讲解
package com.oop;

import java.io.IOException;

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

        }
    /*修饰符 返回值类型  方法名(...){
     *   //方法体
     *   return 返回值;
     * }*/
    //return 结束方法,返回一个结果!可能为空,也可能为任意值
    public String sayHello(){
        return "hello,world";
    }
    public  int max(int a,int b){
        return  a>b ? a:b;//三元运算符!
    }
    public void  print(){
        return;//void返回值为空
       // public void readFile(String file)throws IOException{

        }
    }
}
  • 方法的调用:递归

静态方法

非静态方法

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

    //非静态方法
    //public  void say(){
     //   System.out.println("学生说话了");
    //静态方法
    public static void say(){
        System.out.println("学生说话了");
    }
}
package com.oop;

public class Demo02 {
    //静态方法  static
    //非静态方法 (就是不是static的方法)
    public static void main(String[] args) {
        Student.say();


        //非静态时,则需要实例化这个类,new一个出来
        //new Student().say();
        //对象类型  对象名 =对象值
        //Student student =new Student();




        //static是和类一起加载的
        //public static  void a(){}


        //类实例化之后存在的
        //public void b(){}


    }

}

形参和实参

package com.oop;

public class Demo03 {
    public static void main(String[] args) {
        //实际参数和形式参数的类型要对应!
        int add = Demo03.add(1, 2);
        System.out.println(add);
    }

    public static int add(int a,int b){
        return a+b;
    }
}

值传递和引用传递

package com.oop;
//引用传递:对象,本质还是值传递

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);//秦疆

    }
    public static void change(Perosn perosn) {
        //person是一个对象:指向的----->Perosn perosn = new Perosn();这是一个具体的人,可以改变属性
       perosn.name= "秦疆";
    }
}
//定义了一个perosn类,有一个属性:name
class Perosn{
    String name;//null
}

this关键字

posted @ 2021-03-14 16:50  今晚不熬夜。  阅读(75)  评论(0)    收藏  举报