Day9.1 面向对象

Day9.1

面向对象

  1. java的核心就是面向对象编程(00p, Object Oriented Programming)

  2. 面向过程就是第一步做什么第二步做什么,适合处理简单的问题;面向对象就是分类的思维模式,首先解决需要哪些分类,然后对分类单独思考,最后对某个分类下的细节进行面向过程的思考。

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

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

  5. 抽象。封装、继承、多态。

 

静态/非静态方法

  1. static加以区分

     public class Demo02 {
         //静态方法 加上static;非静态方法 没有static
         public static void main(String[] args) {
     
             //运行say方法,若是static就直接Students.say();(类名.方法名)即可
             //非static:实例化这个类new
             //对象类型 对象名 = 对象值
             //new Students().say();或者
             Students abc = new Students();
             abc.say();
        }
     }
     public class Students {
         public void say(){
             System.out.println("学生说话了。");
        }
     }
  2.  public class Demo02 {
       
         public static void main(String[] args) {
     
        }
         
         //当a方法和b方法都是静态方法或非静态方法的时候二者可以互相调用;
         //当a方法和b方法一个静态一个非静态时无法互相调用,因为静态方法是和类一起加载的,而非静态方法需要类实例化后才存在
         public static void a(){
             b();
        }
         
         public static void b(){
             a();
        }
     }
  3. 重载与静态/非静态方法的调用

     public class Demo03 {
         public static void main(String[] args) {
             //实例化方法
             Demo03 abc = new Demo03();
             int a = abc.add(1,2);
             System.out.println(a);
     
             System.out.println("=====================");
             
             //注意一:这里Demo03没有括号
             //注意二:静态方法也可以被实例化,如下可以写成int b = new Demo03().add(1,2,3);
             int b = Demo03.add(1,2,3);
             System.out.println(b);
        }
     
         public int add(int a, int b){
             return a+b;
        }
         
         public static int add(int a, int b, int c){
             return a+b+c;
        }
     }
  4. java是值传递

     //值传递
     public class Demo04 {
         public static void main(String[] args) {
             //这里的a是实际参数,而下面那个方法中的a是形式参数,并没有返回结果
             int a = 1;
             System.out.println(a);
     
             Demo04.change(a);
             
             //输出结果为1
             System.out.println(a);
        }
     
         //返回值为空
         public static void change(int a){
             a = 10;
        }
     }
  5. 难点:引用传递

     public class Demo05 {
         public static void main(String[] args) {
             Student student = new Student();
     
             //输出结果为null
             System.out.println(student.name);
     
             Demo05.change(student);
             //输出结果为蜂皇浆兵
             System.out.println(student.name);
        }
     
         public static void change(Student student){
             student.name = "蜂皇浆兵";
        }
     }
     
     //一个类可以有多个class,只有一个public
     //定义一个Student类,有一个属性
     class Student{
         //String默认值为null
         String name;
     }

     

  6.  

posted @ 2021-04-23 17:13  蜂皇浆兵  阅读(48)  评论(0编辑  收藏  举报