java学习之旅(day.07)

面向对象编程(oop)

面向过程思想:线性思维

  • 步骤清晰简单,每一步做什么很明确
  • 适合处理较为简单地问题

面向对象思想:总分 抽象

属性+方法=类

  • 分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考,最后,再对某个分类下的细节进行面向过程的思考
  • 适合处理复杂的问题,适合处理需要多人协作的问题

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

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

其本质:以类的方式组织代码,以对象的组织(封装)数据

三大特性:

  • 封装:包装数据
  • 继承:父类与子类
  • 多态:同一个事物会表现出多种形态

从认识角度:先又对象后有类。对象:具体的事物。类:抽象共性

从代码运行角度:先有类再有对象。类是对象的模板

回顾方法:

package com.zhang.oop;
//Demo 类
public class Demo {
    //类中有个方法:main方法
    public static void main(String[] args) {

    }
    /*
    修饰符 返回值类型 方法名(方法的参数){
    方法体
    renturn 返回值;              返回值与返回类型相对应
    }
     */
    public String sayhello(){
        return "hello,world";
    }
    public void hello(){
        return;  //return可以默认不写,要写直接写个return 即可
    }
    public int max(int a,int b){
        return a>b?a:b;//三元运算符
    }
}
//break与return
/*
break:跳出switch
      结束整个循环  continue:结束一次循环
return:方法结束 return的返回值与返回值类型对应
 */

方法的调用

package com.zhang.oop.demo;

public class Demo02 {
    //静态方法 加了static


    //非静态方法 未加static
    public static void main(String[] args) {
      //在student类中写的代码,想在另一个类中调用,
      //有两种方式
        //如果是static(静态的)直接用类名调用:可以用Student.say()
        //Student.say();//类名.方法名
        //如果是非静态的,需要实例化这个类(用new这个关键字)
       //new Student就代表把这个类实例化了  new Student.say()
//一般会形象的写为:
        Student student =new Student();
              //对象类型  对象名字 =对象的值
      //如何用这个对象?  对象名字.方法
        student.say();
    }
}
==========================================
    package com.zhang.oop.demo;

public class Demo03 {
    public static void main(String[] args) {
//调用方法add有两种方法
        //方法一:
        Demo03 demo03=new Demo03();
        demo03.add(1,3);//实际参数
        //方法二:
        //改为静态类,直接调用。方法中加static
       // int add=Demo03.add(1,3);
        //System.out.println(add);
    }
    public  int add(int a,int b){//a,b为形式参数
        return a+b;
    }
}

值传递和引用传递(不明白)

package com.zhang.oop.demo;
//值传递
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;
    }
}
===================================================
    package com.zhang.oop.demo;
//引用传递:一般是传递一个对象,其本质还是值传递
public class Demo05 {
    public static void main(String[] args) {
//怎么用这个person类呢?new
       Person person=new Person(); //实例化的过程
        System.out.println(person.name);//null
        Demo05.change(person);
        System.out.println(person.name);
    }
//和值传递一样写一个方法
    public static void change(Person person){
        //person是一个对象,指向的是下面的Person类
        person.name="zhang";
    }
}
//再定义一个类:person类,有一个属性name
class Person{
    String name;

}
posted on 2021-01-07 19:18  懵逼的程序小白  阅读(54)  评论(0)    收藏  举报