黑马程序员_面向对象与类的分析
一、面向对象的概述:
java是一种面向对象的编程语言,也就是说对象是这种语言的基础,没有对象了,就没有了java。任何功能都是通过对象来实现的,就是将功能封装进对 象,让对象去调用这些功能。这种思想是将数据作为第一位,而方法(功能或者说是算法)作为其次。我个人认为,这是对数据的一种优化,安全性更高,操作起数据来一更方便。
那么将这种思想提升到一种境界就是:万物皆对象。
1、对面向对象的理解:
1)面向对象是相对面向过程而言的,且基于面向过程的。
2)面向对象是一种思想。
3)面向对象将功能封装进对象中,强调了具备功能的对象,主体是对象,将过程简化
4)在实际开发中,以对象为核心,先明确好对象,在实现具体功能,或者可是使用已有的对象。
5)面向对象的三个特征:封装性,继承性,多态性。
二、类与对象概述
1、类(class):可以理解为是构造对象的一个蓝图或者模板,是抽象的概念;反过来说,对象是以类为模型创造的具体实例,是对类的一种具体化、形象化。
类:对生活中事物的描述
对象:对类的具体实现,是实实在在存在的实体。
类就是对象的描述。
对象就是存在的可以被操作的实体。
需求:描述一个汽车。
描述两方面:属性,行为。
属性:轮胎数。颜色。
行为:运行。
其实类中定义的都是成员:
成员变量-----属性。
成员函数-----行为。
- class Car
- {
- //1,描述属性。
- int num;
- String color;
- void run()
- {
- System.out.println(num+"::"+color);
- }
- }
- //描述实物的目的就是为了创建实体。
- class CarDemo
- {
- public static void main(String[] args)
- {
- //创建Car的实体对象。
- new Car();
- }
- }
2.匿名对象
- class CarDemo
- {
- public static void main(String[] args)
- {
- //创建对象。
- Car c = new Car();
- // c.num= 4;
- // c.color = "red";
- // c.run();
- Car c1 = new Car();
- // c1.num = 4;
- // c1.color = "red";
- // c1.run();
- show(c);
- show(c1);
- /*
- 匿名对象。
- Car c = new Car();
- c.run();
- 简化成:
- new Car().run();
- 创建对象只为调用一次方法,可以使用匿名对象完成。
- 匿名对象可以作为实参传递。
- Car c = new Car();
- c.num = 4;
- c.color = "red";
- c.run();
- new Car().num = 5;
- new Car().color = "blue";
- new Car().run();
- */
- show(new Car());
- }
- public static void show(Car c)
- {
- c.num = 3;
- c.color = "black";
- c.run();
- }
3.面向对象-成员变量和局部变量的区别
- /*
- 1,源代码的位置:
- 成员变量定义在类中,该变量在整个类访问有效。
- 局部变量定义在方法中,该变量只在方法内有效。
- 2,内存中的位置:
- 成员变量在堆内存的对象中存储。成员变量所属于对象。
- 局部变量在栈内存的方法中存储。局部变量所属于方法。
- 3,初始化。
- 成员变量都有默认的初始化。根据类型不同初始化值不同。
- 局部变量没有默认初始化。使用时,必须初始化才可以用。
- */
4.面向对象-封装和私有化及封装的好处
- /*
- 封装:隐藏实现细节,对外提供公共的访问方式。
- 1,安全性。
- 2,复用性。
- 3,隔离的变化。后期应用于分层设计。
- */
- /*
- 描述人:
- 属性:姓名,年龄。
- 行为:说话。
- */
- class Person
- {
- private String name;
- private/*私有*/ int age;
- /*
- 将成员变量私有化,对外提供set get方法,对其访问的原因就是可以属性可控。
- 私有关键字private 是一个权限修饰符,只能修饰成员(成员变量,成员函数)。
- 注意:私有仅仅是封装的表现形式之一!
- */
- public void setName(String s)
- {
- name = s;
- }
- public String getName()
- {
- return name;
- }
- public void setAge(int a)
- {
- /*可以加入健壮性的判断。
- if(a<=0 || a>120)
- throw
- */
- age = a;
- }
- public int getAge()
- {
- return age;
- }
- void speak()
- {
- System.out.println(name+":"+age);
- }
- }
- class PersonDemo
- {
- public static void main(String[] args)
- {
- Person p = new Person();
- // p.name = "东邪";
- // p.age = -20;
- p.setName("东邪");
- p.setAge(20);
- p.speak();
- }
- }