黑马程序员_Java面向对象1

来源:互联网 发布:石器时代linux服务端 编辑:程序博客网 时间:2024/06/07 05:09

------- android培训、java培训、期待与您交流! ----------


Java面向对象1

一:面向对象

1.面向对象是基于面向过程的。


2.类与对象的关系:


类:是相关的属性和行为的集合。是一个抽象的概念。

对象:是某种事物的具体存在,具体的表现形式。


3.面向对象和面向过程的区别:


面向过程:面向过程是以函数为基础,完成各种操作。强调的是过程。
面向对象:面向对象是以对象为基础,完成各种操作。强调的是对象,结果。


4.举例说明:
举例:孙悟空三打白骨精。
面向过程:
         打():

         孙悟空,白骨精

面向对象:
         孙悟空.打(白骨精)


举例:买电脑。
面向过程:自己做了所有的事情。
面向对象:田野(中关村卖电脑)


举例:旅游。
面向过程:自己查路线,定票,查宾馆,去火车站... 旅游...
面向对象:找个旅行社。...

总结:以后做任何事情:找对象。让这个对象做事情。自己造对象,然后用。还可以给别人用。

5.面向对象的思想特点:

A:是一种更符合人们思考习惯的思想。


B:把复杂的事情简单化了。


C:把我们从执行者变成了指挥者。


6.面向对象的分析思路:

A:分析该系统中包含哪些对象?


B:明确每个对象可以做什么?


C:明确各个对象间的关系?


步骤:
A:有哪些?     名词提取法。
         大象
         冰箱
         测试
B:每个对象有什么?
         大象:
         in()
         冰箱:
         open()
         close()
         测试:
         main()
C:测试
      测试中调用大象和冰箱的功能。

代码体现:


class 测试类
{

      public static void main(String[] args) {

             冰箱对象.open();
             大象对象.in();
             冰箱对象.close();
      }

      public static void open() {
             System.out.println("打开冰箱门");
      }


      public static void in() {

             System.out.println("装进大象");
      }


      public static void close() {
             System.out.println("关闭冰箱门");
      }
}


7.如何使用呢?

A:创建对象
格式:类名 对象名 = new 类名(); 


B:使用成员变量和成员方法
对象名.成员变量
对象名.成员方法


二:变量

1.成员变量和局部变量的区别?


(1).定义位置区别
成员变量 在类中,方法外
局部变量 在方法中,或者方法的形式参数


(2).:初始化值的区别
成员变量 有默认初始化值
局部变量 没有默认初始化值,想先定义,赋值,才能使用


(3).存储位置区别
成员变量 存储在堆中,随着对象的存在而存在,随着对象的消失而消失。
局部变量 存储在栈中,随着方法的调用而存在,随着方法调用完毕而消失。

2.在使用变量的时候:
  首先在局部范围找,有就使用。
  接着在成员方法找,有就使用。
  如果在成员位置没有,就报错。

  使用过程中,遵循一个原则:就近原则。


3.匿名对象:是没有名字的对象。

4.应用场景:
A:当对对象方法仅进行一次调用的时


B:匿名对象可以作为实际参数进行传递


三:封装

1.概念:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。


2.思想:现在数据的赋值是没有问题的,但是不符合常理。这样的数据其实是不真实的。
        那么,要保证数据的真实性,怎么办,就必须对数据进行校验。
        要想做校验,就必须有逻辑结构语句,要想写逻辑结构语句,就必须定义方法。
        但是,现在即使写了方法,别人还是可以通过:对象名.成员变量 直接使用。

        所以,应该先解决根本问题,让外界不能直接通过对象名.成员变量访问数据。

        怎么办呢?

        java就给你提供了一个修饰符 private。


3.private:是一个关键字,表示私有的意义。可用于修饰成员变量和成员方法。
           被它修饰完毕后的内容,在其他类中是不能直接访问的。


4.private仅仅是封装的一种体现。因为类,函数等其实也是一个封装的体现。


5.代码体现:


class Teacher {
     //类的成员变量都加private
     private String name;
     private int age;


     //一般,get/set同时出现
     public void setName(String n) {
            name = n;
     }

     public String getName() {
            return name;
     }


     public void setAge(int a) {
            age = a;
     }

     public int getAge() {
            return age;
     }
}


class TeacherDemo {
      public static void main(String[] args) {
             //创建对象
             Teacher t = new Teacher();
            //System.out.println(t.name+"***"+t.age);

            //我要使用,怎么办呢?
            System.out.println(t.getName()+"***"+t.getAge());

            //给变量赋值
            t.setName("小强");
            t.setAge(26);  


            System.out.println(t.getName()+"***"+t.getAge());
     }
}


四:构造方法

1.构造方法格式及特点:

A:方法名必须和类名一致


B:没有返回值类型


C:没有具体的返回值

2.作用:给对象进行初始化。

3.注意事项:

A:如果没有给出构造方法,那么,系统会默认给出一个无参构造方法。

public Person(){}


B:假如给了,会是什么情况呢?
  只要给出了构造方法,系统将不再提供无参构造。
  推荐做法:请永远手动给出无参构造。


C:构造方法重载
  其实就是构造方法接收不同的参数。

4.给成员变量赋值:
A:通过set方法。推荐使用。


B:通过构造方法。


五:this关键字和static关键字

1.this关键字:this代表其所在方法所属对象的引用。

  哪个对象调用方法,在方法内部就有一个隐含的this代表这个对象。

谁调用,this就代表谁。

2.应用场景:用于解决局部变量隐藏成员变量值的问题。


3.代码体现:


class Worker {
      //姓名
      private String name;
      //年龄
      private int age;

      //无参构造方法
      public Worker(){}

      public Worker(String name,int age) {
             this.name = name;
             this.age = age;
      }

      public void setName(String name) { //name="小强"; 
             //name = name;
             //假如我能够限定第一个name是成员变量的name
             //我就能够把值赋值给成员变量的name
             this.name = name;
      }

      public String getName() {
             //如果局部范围内没有name,那么就不需要加this。
             //如果局部范围有name,就要加this。
             return name;//省略this
      }

      public void setAge(int age) {
             this.age = age;
      }

      public int getAge() {
             return age;
      }
}

class WorkerDemo {
      public static void main(String[] args) {
             //创建对象
             Worker w = new Worker();

             //输出成员变量的值
             System.out.println(w.getName()+"---"+w.getAge());

             //给成员变量赋值
             w.setName("小强");
             w.setAge(26);


             System.out.println(w.getName()+"---"+w.getAge());
      }
}


4.代码块:就是由{}括起来的代码。

分类:

定义在方法中的代码块,叫局部代码块。作用是:让变量尽可能早的从内存中消失,提高效率。
定义在方法外的代码块,叫构造代码块。作用是:把所有构造方法中的共同的内容定义在构造代码块中。


5.static关键字

(1).它可以修饰成员变量和成员方法。

(2).特点:
A:随着类的加载而加载


B:优先于对象存在


C:为什么要使用静态呢?

如果某个内容是被所有对象所共享,那么,该内容就应该用静态修饰。
没有被静态修饰的内容,其实是属于对象的特殊描述。


D:可以直接被类名调用

(3).注意事项:
A:在静态方法中是没有this关键字的。
  因为静态是随着类的加载而加载。而this是对象创建才存在的。


B:静态方法只能访问静态成员变量和静态成员方法。


C:静态的内容可以通过对象调用,也可以通过类名调用。但是一般推荐使用类名调用。

0 0
原创粉丝点击