黑马程序员_面向对象讲解

来源:互联网 发布:stm8l152数据手册 编辑:程序博客网 时间:2024/05/16 09:57

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

 

首先要明白面向对象是什么东西,为什么要出现面向对象的java思想?

对象都有属性,方法,只要拿到对象就能操作对象的属性和方法

所以把事物封装成对象,便于操作

 

1 面向对象三个特征:封装,继承,多态

  以后开发就是找对象使用,没有对象,就创建一个对象.

  找对象,建立对象,使用对象,维护对象的关系

 

2 定义类就是在描述事物,就是在定义属性和行为,属性和行为共同成为类中的成员(  成员变量和成员方法)

 

3 Car c=new Car();   //c就是一个类类型变量.记住类类型变量指向对象

 

4 当这个类不需要保证独立运行可以不用写主函数

  当要这个类需要运行的时候,创造类对象即可

 

以下是没有主函数的类,可以创建对象使用class Student{private String name;private int age;Student(String name,intage){this.name=name;this.age=age;}}

 5 成员变量(直接在类下面定义)默认初始化值为0和局部变量(在函数里定义或在语   句中)没有默认初始化值

  成员变量:作用于整个类中

  局部变量作用于函数中或者语句中

  

  在内存中的位置:

  成员变量在堆内存中

  局部变量存在于栈内存中

 

6 例子:class Car{       String color="红色";  //这是成员变量       int num=4;           //这是成员变量       void run()           //这是成员方法       {       System.out.print(color+"..."+num);       }       public static void main(String[] args)       {       int money=10000;      //这是局部变量       Car c=new Car();      //在本类中创建本类对象

//c.run;这是错误的,因为主函数是static,而成员方法不是static,静态函数只能调用静态函数,因为静态函数类加载的时候就有了,而非静态函数要创建对象才会存在,还没有怎么能调用呢,要懂得先来后到的秩序啊兄弟

非静态函数可以调用静态函数,因为静态函数比非静态函数先加载

       c.run ;      

       c.num=10;    //调用这个可以

       }

}


7 封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式.

  好处:将变化隔离.便于使用.提高重用性.提高安全性

  

  原则:将不需要对外提供的内容都隐藏起来

       把属性都隐藏,提供公共对其访问

 

  注意:私有仅仅是封装的一种表现形式.

 

8 private:私有.权限修饰符:用于修饰类中的成员(成员变量,成员函数)

                     私有后只能在本类中访问

 

9 构造函数:

     函数名与类名相同

     不用定义返回值类型

     不可以写return语句

  作用:对象一建立就会调用对应的构造函数,是给对象初始化

  

  注意:

    当一个类中没有定义构造函数时,那么系统会默认会给该类加入一个空参数 的     构造函数:例子

    person(){}

   

    当类中定义了构造函数,系统就不帮你定义构造函数了

 

10 构造函数和一般函数在写法上有不同,在运行上也有不同

   构造函数是在对象一建立就运行,给对象初始化

   而一般方法是对象调用才执行,是给对象添加对象具备的功能.

   

   一个对象建立,构造函数只运行一次

   而一般方法可以被该对象调用多次

 

11 什么时候定义构造函数呢?

    当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中

   

12 构造代码块

       给对象进行初始化,对象一建立就运行,而且优先于构造函数执行

 

   和构造函数的区别:

       构造代码块是给所有对象就行初始化

       而构造函数是给对应的对象初始化

 

   例子:   class persro   {   
//这是一个构造函数
{  

  System.out.print("name"+name);   }
   
//这是一个构造函数
person() { System.out.print("name"+name); } }

13 this:看上去是用于区分局部变量和成员变量同名的情况

   this为什么可以解决这个问题呢?

   this:代表本类的对象,到底代表那一个呢?

        代表它所属函数的所属对象的引用.

        简单说:那个对象在调用this,this就代表那个对象的

14 this的应用:当定义类中的功能时,该函数内部要用到调用该函数的对象时,这时    用this来表示该对象,但凡本类功能内部使用了本类对象,都用this来表示

 

15 例子:比较两个人是否是同龄人class Person{       Private int age;       Person(int age)  //这句话int age定义的age是在栈内存中,函数初始化                        //  时,把20赋给了age     age=20;       {       this.age=age;    //这句话右边的age是局部变量的age                        //中的this是调用函数的对象,this.age表示调用函数的对象的age.                           //this.age=age局部变量的age赋值给当前调用函数的对象的age       }       public boolean compare(Person p)       {       return this.age==p.age;       }} class test{       public static void main(String[] args)       {       Person p1=new Person(20);       Person p2=new Person(25);       p1.compare(p2);       }}

16 构造函数间调用构造函数,格式为this(...);

   this语句用于构造函数之间进行互相调用

   this语句只能定义在构造函数的第一行,因为初始化要先执行

 例子:class person{       private int age;       private Sting name;       person(String name)       {       this.name=name;       }       person(String name,int age)       {       this(name);  //这句话是构造函数里面调用构造函数,一般函数调用格式是:函数名();   但是构造函数就要用this代替函数名                         因为this代表调用函数的对象所要初始化的数                    //this(name)定义在函数的第一行,因为避免被其他初始化覆盖       this.age=age;       }} class test2{       public static void main (String[] args)       {       person p1=new person(zhangsan,25);       person p2=new person(wangwu,20);       }} 


 

 

 

 

 

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

 

原创粉丝点击