1、类与对象的关系
类就是对象的描述。 对象就是存在的可以被操作的实体。 需求:描述一个汽车。 描述两方面:属性,行为。 属性:轮胎数。颜色。 行为:运行。 其实类中定义的都是成员: 成员变量-----属性。 成员函数-----行为。 class Car { //1,描述属性。 int num; String color; void run() { System.out.println(num+"::"+color); } /* public static void main(String[] args) { //创建Car的实体(对象)通过new。 new Car(); } */ } //描述实物的目的就是为了创建实体。 class CarDemo { public static void main(String[] args) { //创建Car的实体对象。 new Car(); } }
图例
2、数据类型的引用与面向对象
3、成员变量和局部变量的区别
//描述汽车。 /* 需求:描述一个汽车。 描述两方面:属性,行为。 属性:轮胎数。颜色。 行为:运行。 */ class Car { int num; String color; void run() { System.out.println(num+"....."+color); } } /* 成员变量和局部变量的区别? 1,源代码的位置: 成员变量定义在类中,该变量在整个类访问有效。 局部变量定义在方法中,该变量只在方法内有效。 2,内存中的位置: 成员变量在堆内存的对象中存储。成员变量所属于对象。 局部变量在栈内存的方法中存储。局部变量所属于方法。 3,初始化。 成员变量都有默认的初始化。根据类型不同初始化值不同。 局部变量没有默认初始化。使用时,必须初始化才可以用。 */ 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(); } }
4、对象中构造函数的作用
class Person { private String name; Person(String s) { name = s; } public void setName(String s) { name = s; } Person() { System.out.println("person()....run"); } Person(int x) { System.out.println("person(x)...."+x); } } /* 对象会自动调用对应的构造函数。 构造函数作用:就是对对象进行初始化的。 揭秘: 类中没有定义过构造函数,那么new对象到底是怎么初始化的呢? 其实class定义的类中,在没有声明任何构造函数的情况下,类中默认会有一个空参数的构造函数。 如果类中自定义了构造函数,默认的构造函数就没有了。 构造函数在类中有多个的情况下,是以重载的形式存在的。 */ class ConstructorDemo { public static void main(String[] args) { new Person(); } }
5、过程和对象的区别
6、面向对象的概念
面向过程 面向对象。 将大象装进冰箱里。 按照面向过程的思考方式: 1,打开冰箱。 2,存储大象。 3,关闭冰箱。 c语言。 按照面向对象的思考方式: 1,冰箱打开。 2,冰箱存储。 3,冰箱关闭。 面向对象基于面向过程。 将更多的动作进行封装。 想要使用动作(函数)的时候,需要先找到对象。 举例:买组装机。 面向对象总结: 1,它是一种思想,更符合现在人们的思考习惯。 2,从以前的过程的执行者,转成现在的对象的指挥者。 3,将复杂的事情简单化了。 面试中的面向对象: 人开门。名词提炼法。先找出需求中的对象。 class 人 { void 开门(门 x) { x.开(); } } class 门 { void 开() { //门轴,弹簧。 } } 如何明确具体的动作定义到哪个对象中呢? 功能中用到了哪个对象中的内容,就把功能定义到哪个对象中。 以后开发: 不断的描述对象,创建对象,使用对象,并维护对象之间的关系。