A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王健辉 中级黑马   /  2014-8-6 10:43  /  813 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一:面向对象
(一)面向对象小结:
*概念:相对于面向过程而言。是一种思想,强调的是功能的对象。
*面向对象的本质:以类的方式组织代码,以对象的方式组织数据。
*理解:其实要理解面向对象,最好和面向过程做一下小比较即可。面向对象和面向过程都是一种思想,
面向过程
强调的是功能行为
面向对象
将功能封装进对象,强调具备了功能的对象。
面向对象是基于面向过程的。
可以说面向过程重在过程,面向对象即是面向结果。比如说找工人修车,我怕只面向修车工人,看中的是结果,而不是修车过程。
*特点:1.是一种符合人们思考习惯的思想
2.可以将复杂的事情简单化
3.将程序员从执行者转换成了指挥者
4.需求时:
先要去找具有所需的功能的对象来用。
如果该对象不
存在,那么创建一个具有所需功能的对象。
这样简化开发并提
高复用。
*面向对象开发,设计,特征
开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。

设计的过程:其实就是在管理和维护对象之间的关系。

面向对象的特征:
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
(二)类和对象的关系
*对象:是具体的事物,也叫object,instance实例,老毕的说某个类的对象,某个类的实例,都是一样的意思
*类:是对对象的抽象,可以叫做class,是对现实生活中具体事物的抽象,概念上的定义。
*属性:对应类中的成员变量。
*
行为:对应类中的成员函数。
定义类其实在定义类中的成员(成员变量和成员函数)。
代码示例:创建对象并使用。
class Car //对Car这类事物进行描述
{
       
        String color = "red";
       
        int num = 4;
       
        void show()
       
        {
               
            System.out.println("color="+color+"..num="+num);
       
        }

}

class CarDemo {
       
        public static void main(String[] args)
       
        {
               
                Car c = new Car();//建立对象
               
                c.color = "black";//对对象的属性进行修                                    //改               
                c.show();//使用对象的功能。
       
        }
}
*成员变量和局部变量的区别?
成员变量:
成员变量定义在类中,在整个类中都可以被访问。
成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
成员变量有默认初始化值。

局部变量:
局部变量只定义在局部范围内,如:函数内,语句内等。
局部变量存在于栈内存中。
作用的范围结束,变量空间会自动释放。
局部变量没有默认初始化值。
*匿名对象的应用
匿名对象是对象的简化形式;
new 实例名称();
使用方式一:当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化,如果对一个对象进行多个成员调用,必须给这个对象起个名字。
使用方式二:可以将匿名对象作为参数使用。
(三)面向对象三大特征 封装、继承、多态
1.封装
*概念:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
*
好处:
将变化隔离。
便于使用。
提高重用性。
提高安全性。*原则:
将不需要对外提供的内容都隐藏起来。
把属性都隐藏,提供公共方法对其访问。

*private:私有,权限修饰符:用于修饰类中的成员(成员变量,成员函数)
*私有只在本类中有效。
注意:私有仅仅是封装的一种表现形式。
常用之一:
将成员变量私有化,对外提供对应的set ,get方法对其进行访问。提高对数据访问的安全性。
代码展示:对Person进行封装
将age私有化以后,类以外即使建立了对象也不能直接访问。
但是人应该有年龄,就需要在Person类中提供对应访问age的方式。之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句,对访问的数据进行操作。提高代码健壮性。
class Person
{
        private int age;
       
        public void setAge(int a)
        {
                if(a>0&&a<130)
                {
                     age=a;
                     speak();
                }
                else
                     System.out.println("feifa age");
               
        }

        public int getAge()
        {
                return age;
        }

        void  speak()
        {
                System.out.println("age="+age);
        }

}

class  PersonDemo
{
        public static void main(String[] args)
        {
                Person p = new Person();
                p.setAge(33);
        }
}
***构造函数
特点:1.
函数名与类名相同2.不用定义返回值类型3.没有具体的返回值。


注意:
默认构造函数的特点。
多个构造函数是以重载的形式存在的。对象一建立就会调用与之对应的构造函数。
*构造函数的作用:可以用于给对象进行初始化。
*构造函数的小细节:当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。当在类中自定义了构造函数后,默认的构造函数就没有了。
*构造函数和一般函数区别:
构造函数和一般函数在写法上有不同。
在运行上也有不同。
构造函数是在对象一建立就运行。给对象初始化。
而一般方法是对象调用才执行,给是对象添加对象具备的功能。
一个对象建立,构造函数只运行一次。
而一般函数可以被该对象调用多次。

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

*构造代码块:
作用:给对象进行初始化。
对象一建立就运行,而且优先于构造函数执行。
和构造函数的区别:
构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化。记住:构造代码快中定义的是不同对象共性的初始化内容。
class Person
{
        private String name;
        private int age;
       
        {
                 System.out.println("cry......");//构造代码块
        }

        Person()//构造函数
        {
                System.out.println("A: name="+name+",age="+age);
               
        }
        Person(String n)
        {
                name = n;
                System.out.println("B: name="+name+",age="+age);
               
        }
       
        Person(String n,int a)
        {
                name = n;
                age = a;
                System.out.println("C: name="+name+",age="+age);
        }

}

class  PersonDemo2
{
        public static void main(String[] args)
        {
                Person p1 = new Person();
                Person p2 = new Person("lisi");
                Person p3= new Person("wangjainhui",24);
               
        }
}


**this关键字
特点:this代表其所在函数所属对象的引用。
换言之:this代本类对象的引用。


什么时候使用this关键字呢?

当在函数内需要用到调用该函数的对象时,就用this。this:是用于区分局部变量和成员变量同名情况.
this不能用于static方法中。
this();用于构造函数间的调用。 :用于构造函数之间进行互相调用。
this语句只能定义在构造函数的第一行。因为初始化要先执行。
class Person
{
        private String name;
        private int age;
       
        {
               
                System.out.println("code run");
        }
       
        Person()
        {
                //this("haha");说明:不能有具体的返回值。
                System.out.println("person run");
        }
        Person(String name)
        {
                this();//<=>this.name =name;
                System.out.println("name="+name);
        }
        Person(String name,int age)
        {
                //this(name);<=>this.name = name;说明:可省略
                this.age = age;
                System.out.println("name="+name+",age="+age);
        }

}

class  PersonDemo4
{
        public static void main(String[] args)
        {
                Person p = new Person("huige");
                //Person p = new Person("lisi",30);
                Person p1 = new Person("laowang",36);

        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马