当前位置:编程学习 > JAVA >>

黑马程序员_<<面向对象(对象,封装,satic,构造函数,代码块,this)---01>>

 
1.  面向对象
      1.概述
            程序分为:面向过程和面向对象
              面向过程:注重的是一个过程,其实就是一个一个的功能,我们调用程序,相当于执行者。
              面向对象:一种思维模式,把事物都看成对象,对象有自己的特征和功能,然后我们可以调用对象相应的属性和行为,我们就是个指挥者。
             万事万物皆对象,把要作为的事物都看成一个对象,然后调用本身的属性和行为。
             例如:门,我们就可以把其看成一个对象,那么他的属性就有长和宽,门栓..等,行为就有开和关…等。
      2.表示形式
               我们用类(class)来表示对现实事物的描述。类中的成员分为:成员变量和成员函数。
          对象就是实实存在的事物,个体。
          事物的属性对应类的变量,事物的行为对应类的函数。同一种事物有的同一种属性有不同的类型,所以我们要通过创建对象来指定对象的特征,使用new 类名();创建对象。
          有三大特性:封装,继承和多态
  例如:
[java]  
/** 
 * 描述人的类 
 */  
/** 
 * 描述人的类 
 */  
public class Person {  
  private String name;// 属性姓名  
  private int age;// 属性年龄  
   
  public Person(String name, int age) {// 构造方法  
    this.name = name;  
    this.age = age;  
  }  
   
  public void say() {// 说话行为函数  
   
  }  
}  
   
 
 
Person p=newPerson(“zhansgan”,23);//p就是一个人,就是一个对象
更形象的比喻
      就是在汽车制造厂中,那个汽车图纸就是类(class),按照图纸生产出来的汽车就是对象。
      3.成员变量和局部变量
             局部变量:范围是在方法中,在内存中是存在栈中,
           成员变量:是作用于整个类中,在内存中是存在堆中。
          成员变量可以被类调用或者对象。
     4.匿名对象
             格式:new 类名() 或者 new 类名(参数)
          用处:
               第一:当一个对象值需要使用一次并且至调用一个成员,那么就使用匿名对象,当使用完后,那么就会释放其内存。
                第二:作为实际参数进行传递。
2. 封装
         封装(Encapsulation):就是把对象的公共特征封装起来,存在一个类中,仅提供公共的方法使用。
      优点:便于管理,提高重用性,提高安全性。
      原则:把不需要的属性隐藏起来,提供对外访问的方法。
       在使用的时候,不需要知道里面是怎么封装的,直接使用就可以,同一个功能方法可以多次调用,这就是重用性。
 
3. 构造函数
           特点:方法名和类名一致,无返回值,函数体中不能有结束语句(break,continue)和return 内容;
        当创建对象的时候,一定调用相应的构造函数,作用:可以对属性初始化。
         每一个类都有一个默认的无参构造函数,所以可以不用写构造函数,也可以自定义构造函数,倘若定义了构造函数,那么默认的构造函数就失效了,直接调用已经自定义的构造函数。
        对于构造函数可以重载,可以有不同的参数类型。
 
      构造函数与一般函数的联系与区别:
          构造函数:只要一创建对象,那么就会调用相应的构造函数,并且一个对象只执行一起。
          一般方法:由对象调用或者类调用(satic),一个对象多次调用一般方法。
 
[plain] 
 /**  
 * 描述人的类  
 */  
public class Person {  
  private String name;// 属性姓名  
  private int age;// 属性年龄  
   
  public Person() {// 无参构造函数  
    System.out.println("无参构造函数");  
  }  
   
  public Person(String name, int age) {// 有参构造方法  
    this.name = name;  
    this.age = age;  
    System.out.println("有参构造函数");  
  }  
   
  public void say() {// 说话行为函数  
   
  }  
   
  public static void main(String[] agrs) {  
    Person p = new Person();  
    Person p1 = new Person("zhansan", 23);  
  }  
}  
结果:  
无参构造函数  
有参构造函数  
 
 
4. 代码块
      使用{}括起来的一段代码。
     根据位置不同可以分为:
        普通代码块:就是定义在方法中的代码块。
        构造代码块:是对所有的对象进行初始化的,所有对象的共有的特性可以在此代码块中初始化。而构造方法是对指定对象进行初始化的。只要对象一创建,那么构造代码块就会执行,并且优先于构造函数。
        静态代码块:使用static关键字声明的,只执行一次,优先于构造块。随着类的加载而加载。
        同步代码块:使用synchronized关键字声明的代码块,称为同步代码块。格式:synchronized(同步对象){}
[java] 
/** 
 * 描述人的类 
 */  
public class Person {  
  private String name;// 属性姓名  
  private int age;// 属性年龄  
   
  {  
    System.out.println("构造代码块");  
  }  
  static {  
    System.out.println("静态代码块");  
  }  
   
  public Person() {// 无参构造函数  
    System.out.println("无参构造函数");  
  }  
  public void say() {  
    {  
      System.out.println("普通代码块");  
    }  
   
  }  
   
  public void show() {  
    synchronized (this) {  
      System.out.println("同步代码块");  
    }  
  }  
   
  public static void main(String[] agrs) {  
    Person p = new Person();  
    p.show();  
    p.say();  
  }  
补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,