java(五)【面向对象】匿名对象、封装、构造函数

面向对象定义

面向对象是相对面向过程而言

面向对象和面向过程是一种思想

面向过程:强调的是功能行为

面向对象:将功能封装进对象,强调具备了功能的对象

面向对象是基于面向过程的

面向对象三大特征:封装、继承、多态

类和对象的关系

类就:是对现实生活中事务的描述

对象:是这类事物,实实在在存在个体

实例:

 1 //需求:描述汽车(颜色、轮胎数),描述事物其实就是在描述事物的属性和方法
 2 //属性对应是类中变量,行为对应的类中的函数(方法)
 3 //其实定义类,就是在描述事物,就是在定义属性和行为。属性和行为共同成为类中的成员(成员变量,成员方法)
 4 class car
 5 {
 6     String color ="red"; //描述颜色
 7     int num =4; //描述轮胎数
 8     //运行行为
 9     void run()
10     {
11         System.out.println(color+"..."+num);
12     }
13     }
14 public class asd {
15     public static void main(String[] args) {
16     //生产汽车,在java中通过new操作符来完成
17     //其实就是在堆内存中产生一个实体
18         car c = new car(); //c就是一个类类型变量。记住:类类型变量指向对象
19         //需求:将已有车的颜色改成蓝色。指挥该对象使用,在java指挥方式为:对象.对象成员
20         c.color ="blue";
21         c.run();
22         car c1 =new car();
23         c1.run();
24     }    
25 }
结果为:

blue...4
red...4

 成员变量和局部变量

class car
{
    String color ="red"; //color成员变量
    int num =4; //num成员变量
    void run()
    {
        System.out.println(color+"..."+num);
    }
    }

作用范围:

  1. 成员变量作用于整个类中
  2. 局部变量作用与函数中或者语句中

在内存中的位置:

  1. 成员变量:在堆内存中,因为对象的存在,才在内存中存在。
  2. 局部变量:存在栈内存中

 匿名对象

定义:是对象的简化形式

两种使用情况:

  1. 当对对象方法仅进行一次调用的时候
  2. 匿名对象可以作为实际参数进行传递
 1 class car
 2 {
 3     String color ="red"; 
 4     int num =4; 
 5     void run()
 6     {
 7         System.out.println(color+"..."+num);
 8     }
 9     }
10 public class asd {
11     public static void main(String[] args) {
12     //car c =new car();   第一种方式
13     //show(c);
14         show (new car());//匿名对象;   第二种方式,效果一致。
15     }    
16     public static void show (car c)
17     {
18         c.num=7;
19         c.color="green";
20         c.run();
21     }
22 }

 封装

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

好处:

  1. 将变化隔离
  2. 便于使用
  3. 提高重用性
  4. 提高安全性

封装原则:

  1. 将不需要对外提供的内容都隐藏起来
  2. 把属性都隐藏,提供公共方法对其访问

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

  私有只在本类中有效

私有仅仅是封装的一种表现形式

 1 //之所以对外提供访问方式,是因为可以在访问方式中加入逻辑判断语句
 2 class person
 3 {
 4     private int age;  //一个属性有两个方法,一个set,一个get
 5     public void setAge(int a)
 6     {
 7         if(a>0 && a<130){
 8             age=a;
 9             speak();
10     }else {
11             System.out.println("nono");
12         }
13 }
14     
15     public int getAge()
16     {
17         return age;
18     }
19     void  speak()
20     {
21         System.out.println("age="+age);
22     }
23     }
24 public class asd {
25     public static void main(String[] args) {
26     person p = new person();
27     //p.age=-20;
28     p.setAge(-20);
29     //p.speak();
30     }
31     }

 

构造函数

特点:

  1. 函数名与类名相同
  2. 不用定义返回值类型
  3. 不可以写return语句

作用:给对象进行初始化

注意:

  1. 默认构造函数的特点
  2. 多个构造函数时以重载的形式存在的

构造函数和一般函数的区别

  1. 在写法上有不同。
  2. 在运行上也有不同。
  3. 构造函数时在对象一建立就允许,给对象初始化
  4. 而一般方法是对象调用才执行,是给对象添加对象具备的功能。
  5. 一个对象建立,构造函数只运行一次
  6. 而一般方法可以被该对象调用多次

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

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

 1 //对象一建立就会调用与之对应的构造函数
 2 //当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数
 3 //当在类中自定义了构造函数后,默认的构造函数就没有了
 4 class person
 5 {
 6     private String name;
 7     private int age;
 8     person(){
 9         System.out.println("name="+name+",age="+age);
10         cry();
11     }
12     person (String n)
13     {
14         name=n;
15         System.out.println("name="+name+",age="+age);
16         cry();
17     }
18     public void setName (String n)
19     {
20         name =n;
21     }
22     public String getName()
23     {
24         return name;
25     }
26     person(String n,int a)
27     {
28         name =n;
29         age =a;
30         System.out.println("name="+name+",age="+age);
31         cry();
32     }
33     public static void cry()
34     {
35         System.out.println("cry");
36     }
37     }
38 public class asd {
39     public static void main(String[] args) {
40     //person p = new person();
41     person p2 = new person("lili");
42     p2.setName("qweqwe");   //修改name
43     System.out.println(p2.getName());
44     //person p3 = new person("lolo",10);
45     }
46     }

构造代码块

作用 :给对象进行初始化

   对象一建立就运行,而且优先于构造函数执行

和构造函数的区别:

  1. 构造代码块是给所有对象进行统一初始化
  2. 构造函数时给对应的对象初始化

构造代码块中定义的是不同对象共性的初始化内容

 

posted @ 2015-08-05 11:49  花花妹子。  阅读(193)  评论(0)    收藏  举报