java 面向对象(一)
-
结构化编程(面向过程): 在程序设计早期,程序用流程图和自订向下的方法设计,采用这种设计方法,程序员会将一个大的问题分解成更小的任务,然后为每个更小的任务编写一个过程(或函数)。
-
面向对象编程(Object Oriented Programming):围绕着要解决的问题中的对象来设计。建立对象模型,将问题域化为不同的对象去处理。
-
两者区别:
-
面向过程:
-
优点:性能比面向对象高,因为类的调用时需要实例化,开销比较大,比较消耗资源,单片机、嵌入式开发、Linux|Unix等一般采用面向过程开发,性能是重要因素。
-
缺点:没有面向对象容易维护、易复用、易扩展
-
-
面向对象:
-
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,是系统更加灵活、更加易于维护
-
缺点:性能比面向过程低。
-
-
-
java面向对象
-
类:具有相同属性和行为的一组对象的集合,抽象的概念的集合,表示一个共性的产物,类之中定义的是属性和行为(方法)。
-
对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同的对象;java中一切皆对象;对象存在于内存中。
-
总之:类是对象的模板,对象是类的实例。类只有通过对象才可以使用 ,而在开发中应该先产生类,之后再产生对象,类不能直接使用,对象可以直接使用,类是对象的抽象,对象是类的实例。
-
定义类的格式:在一个.java文件有且只有一个public 类,类名必须和文件名一致, 类名首字母大写。
class 类名 { 属性(成员变量); 行为(方法); } // 例子 public class Person { String name; int age; public void run() { System.out.println("I'm running"); } public void tell() { System.out.println("my name is " + name + "\n I'm " + age + " years old"); } }
-
实例化对象:
类名称 对象名称 = new 类名称(); 类名称 对象名称 = null; 对象名称 = new 类名称(); \\ 实例化对象后,可以操作属性和方法。 对象名称.属性; // 调用类中的属性 对象名称.方法(); //调用类中的方法
-
对象在内存中的存放
-
堆内存:保存对象的属性内容。堆内存需要用new关键字来分配空间。
-
栈内存:保存的是堆内存的地址和变量。
-
声明对象和创建的区别
-
对象的销毁:
-
-
this引用:
- 每个对象都有一个隐含的this变量,他可以访问类的所有信息。
- this代表当前类的引用:
- 当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量
- 把自己当作参数传递时,也可以用this.(this作当前参数进行传递)
- 有时候,我们会用到一些内部类和匿名类,如事件处理。当在匿名类中用this时,这个this则指的是匿名类或内部类本身。这时如果我们要使用外部类的方法和变量的话,则应该加上外部类的类名。
- 在构造函数中,通过this可以调用同一类中别的构造函数。
- this同时传递多个参数。
-
包:
- 包就是文件夹,用来存放java类:
- 提供了一个组织类的机制
- 为包中类提供了命名空间
- 将类添加到包中,要使用package关键字 + 包名。
- 创建包后类的全名为: 包名.类名。
- 同一个包下,可以直接调用其他类。
- 要调用不同包的类,要使用 import 类全名;。
- 包就是文件夹,用来存放java类:
-
-