aaaaaa

黑马程序员------面向对象(一)

1.1 面向对象概念

1.1.1 面向对象概念

面向对象是相对面向过程而言,强调的是功能的对象。面向对象和面向过程都是一种思想。

举例理解面向对象:如请人修车,我只面向修车的人,不面对修车的过程。只看中修好车的结果。

面向对象的本质:以类的方式组织代码,以对象的方式组织数据。

1.1.2 面向对象的特点

是一种符合人们思考习惯的思想,可以将复杂的事情简单化,将程序员从执行者转换成了指挥者。

1.1.3 面向面向对象的特征:
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
以后开发,其实就是找对象,没有对象,自己创建一个

1.2 类与对象之间的关系

1.2.1类和对象的关系

现实生活中的对象:张三 李四。
想要描述:提取对象中共性内容。对具体的抽象。
描述时:这些对象的共性有:姓名,年龄,性别,学习java功能。

映射到java中,描述就是class定义的类。
具体对象就是对应java在堆内存中用new建立实体,属性对应是类中变量,行为对应的类中的函数(方法)。

类就是:对现实生活中事物的描述。定义类,其实就是在描述事物,就是在定义属性和行为。

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

1.2.2成员变量和局部变量的区别

成员变量和局部变量。
作用范围。
成员变量作用于整个类中。
局部变量变量作用于函数中,或者语句中。
在内存中的位置:
成员变量:在堆内存中,因为对象的存在,才在内存中存在。
局部变量:存在栈内存中。

1.2.3示例:创建对象,使用对象

需求:描述汽车(颜色,轮胎数)。描述事物其实就是在描述事物的属性和行为

//对Car这类事物进行描述
class Car
{

  String color = "red";//描述颜色
  int num = 4;//描述轮胎数
  void run()
  {

    System.out.println("color = " +color +"...num = " +num);//输出汽车的值

  }
}

class CarDemo

{
  public static void main(String[] args)
  {
    Car c = new Car();//通过new关键字,建立对象,c就是一个类类型的引用变量,指向了该类的对象
    c. color = "blue" ;//对对象的属性进行修改
    c.run() ;//通过对象.成员的形式来调用对象的run方法
  }
}

1.3 封装

1.3.1封装:

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

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

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

1.3.2对象属性的私有

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

2.被私有化的成员只在本类中有效。

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

之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句。

对访问的数据进行操作。提高代码健壮性

1.3.3示例:

/*

人:属性:年龄

  行为:说话

本例将age私有化以后,类以外即使建立了对象也不能直接访问。
但是人应该有年龄,就需要在Person类中提供对应访问age的方式。

之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句。
对访问的数据进行操作。提高代码健壮性。

*/

class Person

{

  private int age ;//通过private私有化age,把属性进行隐藏,让别人不能直接访问赋值,

  public void setAge( int a) //通过set、get方法对外提供公共方法对其访问

  {

    if (a > 0 && a < 130)

    {

      age = a;

    }

  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(20);

    p.speak();

//如果赋值不合法,则set方法不允许成功赋值

// p.setAge(-40);

}

}

END

时间: 2024-10-12 16:56:41

aaaaaa的相关文章

Eclipse和MyEclipse工程描述符.classpath和.project和.mymetadata详解aaaaaa(转)

Eclipse和MyEclipse工程描述符.classpath和.project和.mymetadata详解(转) (2012-03-28 15:06:54) 转载▼ 标签: .mymetadata .project .classpath it 分类: an_tools (今天从ftp上down了个demo项目搞了半天,才出现登录界面,快哭了,而后找到这篇文章.主要是注意.mymetadata文件中的context-root属性,要不你也会哭的.) 正文: 有时候在一个Java工程里我们需要加

CSS颜色代码大全

CSS颜色代码大全 颜色代码表(一): EEEEEE FFCCFF FF66FF FF00FF DDDDDD FFCCCC FF66CC FF00CC CCCCCC FFCC99 FF6699 FF0099 BBBBBB FFCC66 FF6666 FF0066 AAAAAA FFCC33 FF6633 FF0033 999999 FFCC00 FF6600 FF0000 888888 CCCCFF CC66FF CC00FF 777777 CCCCCC CC66CC CC00CC 666666

startActivityForResult和setResult详解

原文:startActivityForResult和setResult详解 startActivityForResult与startActivity的不同之处在于:1.startActivity( ) 仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( ).2.startActivityForResult( ) 可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activity,而当这个Text2Activit

output value

http://neuralnetworksanddeeplearning.com/chap3.html // This is a paper.js widget to show a single neuron learning. In // particular, the widget is used to show the learning slowdown that // occurs when the output is saturated. // // The same basic wi

jquery13 attr() prop() val() addClass()等 : 对元素属性的操作

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script src="jquery-2.0.3.js"></script> <script> jQu

微信小程序组件解读和分析:十二、picker滚动选择器

picker滚动选择器组件说明: picker: 滚动选择器,现支持三种选择器,通过mode属性来区分, 分别是普通选择器(mode = selector),时间选择器(mode = time),日期选择器(mode = date), 默认是普通选择器. picker滚动选择器示例代码运行效果如下: 下面是WXML代码: [XML] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23

微信小程序组件解读和分析:十三、radio单选项目

radio单选项目组件说明: radio:单选项目. radio-group: 单项选择器,内部由多个<radio/>组成. radio单选项目示例代码运行效果如下: 下面是WXML代码: [XML] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 <view class="page">   <view class="page__hd">     <text

CSS3的新特性 行内盒子before和after

CSS3的新特性 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>before after</title> 6 <style type="text/css"> 7 /*在DIV1盒子内部前面*/ 8 #div1:before{ 9 width: 100p

xargs 原理&amp;使用

1. 简介 之所以能用到这个命令,是由于很多 linux 命令不支持用管道传递参数,例如 find /sbin -perm +700 | ls -l 这个命令是错误的 find /sbin -perm +700 |xargs ls -l   这样才是正确的 通常Linux命令可以用|首尾相连,上一个命令的 stdout 连接到下一个命令的 stdin.但是有些命令,比如ls.rm等,是从命令行参数接受输入的.这时候如果想把上一个命令的输出传给它们,就不好办了.所以就有了xargs. 简单而言,x