面向对象,回顾方法

面向过程 & 面向对象

  • 面向过程思想

    • 步骤清晰简单,第一步做什么,第二步做什么

    • 面向过程适合处理一些较为简单的问题

  • 面向对象思想

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

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

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

什么是面向对象

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

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

  • 抽象-----将多个目标的相似点抽取出来

  • 三大特性:

    • 封装:将数据保存起来,通过留下的特定接口调用

    • 继承:子类继承父类的数据方法等

    • 多态:同一个事物会衍生出各种不同形态

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

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

回顾方法及加深

  • 方法的定义

    • 修饰符

    • 返回类型

    • break:跳出switch,结束当前循环 return:结束方法,返回一个值

    • 方法名:注意规范 驼峰命名法 见名知意

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

    • 异常抛出

  
import java.io.IOException;
?
public class Demo01 {
   public static void main(String[] args) {
?
  }
   /*
     修饰符 返回值类型 方法名(参数...){
          //方法体
          return 返回值
     }
   */
   public String sayHello(){
       return "hello,world";
  }
   public  int max(int a,int b ){
       return a>b ? a:b;
  }
   //异常抛出 读文件   抛出IO异常
   public  void readFile(String file) throws IOException{
       
  }
}
  • 方法的调用

    • 静态方法

    • 非静态方法

      
    public class Demo02 {
       public static void main(String[] args) {
           Student.say();
           //实例化这个类 new
           //对象类型 对象名 = 对象值
           Student xiaoMing =  new Student();
           xiaoMing.say2();
      }
       //静态方法 和类一起加载的
       public static void a(){
           //   b();报错
      }
       //非静态方法   类实例化之后才存在
       public void b(){
           a();
      }
    }
      
    //学生类
    public class Student {
    ?
       //静态方法
       public static void say(){
           System.out.println("学生说话了");
      }
       //非静态方法   为了更好地封装,防止外部调用
       public void say2(){
           System.out.println("学生说话了2");
      }
    }
    • 形参和实参

    • 值传递和引用传递

      
    //值传递
    public class Demo03 {
       public static void main(String[] args) {
           int a = 1;
           System.out.println(a);//1
    ?
           Demo03.change(a);//传递的不是变量a,而是a的值1
           System.out.println(a);//1
      }
    ?
       public static void change(int a){
           a = 10;
      }
    }
      
    //引用传递:对象     本质还是值传递
    public class Demo04 {
       public static void main(String[] args) {
           Person xiaoMing = new Person();//实例化一个Person类
           System.out.println(xiaoMing.name);//null
           Demo04.change(xiaoMing);
           System.out.println(xiaoMing.name);//小黑
      }
    ?
       public static void change(Person a){
           //a是一个对象,指向的是 Person xiaoMing = new Person();这是一个具体的人 可以改变属性
           a.name = "xiaoHei";
      }
    }
    ?
    //定义了一个Person类,有一个属性:name
    class Person{
       String name;
    }
    • this关键字:代表当前这个类

 

面向对象,回顾方法

上一篇:ASOC Codec


下一篇:Kentico中UniGrid的使用