java-05 面向对象初级包创建对象
Posted xiaobai1202
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java-05 面向对象初级包创建对象相关的知识,希望对你有一定的参考价值。
1.基本概念
至于什么是面向对象、为什么面向对象、面向对象到底有什么好处 请移步这里进行了解
1.1 面向过程与面向对象的区别与优缺点
面向过程:面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用每一个函数,适合简单的任务。
面向对象:面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。每个对象包含自己的属性和功能。
面向过程的优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
面向过程的缺点:没有面向对象易维护、易复用、易扩展。
面向对象的优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护。
面向对象的缺点:性能比面向过程低。
面向对象的内部方法使用的是面向过程。
1.2 类、属性、方法的概念
类:是将具有相同属性和功能的物体抽象之后的结果,是一类事务的抽象表示。是创建对象的模板 。类里面包含属性和方法。(例如人类 所有的人都有身高体重(属性),都能吃饭睡觉(方法))
属性:类的属性就是该类所有的全部特征(也叫成员变量)(这里并不严谨,属性还可以分为类的属性和对象的属性)。 例如人类有身高体重、汽车类有品牌和马力、电脑类有cpu型号和内存大小等。
方法:类的方法就是该类所有的全部功能(这里并不严谨,方法分为类的方法和对象的方法)。例如人可以吃饭睡觉、汽车可以跑、电脑可以开机关机等。
理解几个名词 :OOA 面向对象分析 OOD面向对象设计(只看前一部分就行了 服了百度了) OOP面向对象编程
1.3对象的概念
对象就是一个类的实例,是类通过 new 关键字构造出来的,本文下面会详细介绍如何构造一个对象和构造对象时比较常用的方法。
2.面向对象语法
2.1 声明一个类
声明一个类的语法: [访问修饰符] class 类名 { 类体(属性和方法) }
注意:一个类文件中可以有多个类,但只能有一个public的类,并且该类必须与保存该类的java文件名一致,否则会发生错误。
public class Person{ //人类 }
2.2声明属性
声明属性的语法 [访问修饰符] 变量类型 变量名;
public class Person{ //人类 public String name; //名字 public int age; //年龄 public int height; //身高 public int weight; //体重 }
2.3 声明方法
声明方法的语法: [访问修饰符] 返回值类型 方法名{ 方法体 }
public class Person{ //人类 public String name; //名字 public int age; //年龄 public int height; //身高 public int weight; //体重 public void sleep(){ //方法体 } }
2.4一些说明
2.4.1 访问修饰符
访问修饰符是用来控制对象的属性或方法的可见性的,其目的和作用后面会仔细为大家讲解。
2.4.2 方法的返回值
方法执行完毕后,有的方法可能需要返回处理后的数据或者返回一个运行状态,那么这个时候就要用到方法的返回值。 返回值在方法中的实现就是return 一个与返回值类型相同的变量或常量。
public class Person{ //人类 public String name; //名字 public int age; //年龄 public int height; //身高 public int weight; //体重 public void sleep(){ //方法体 } public int getAge(){ //带有返回值的方法,返回一个int return this.age; //返回一个int类型的值。 } }
3.包的概念
3.1什么是包,为什么要使用包
包是java进行类管理的一种手段,相当于硬盘中的文件夹(包在硬盘上面的映射就是一个一个的文件夹),我们可以将其看成是类的文件夹。
一般的报名都是以域名到这写的形式,每一个点号代表一级文件夹 例如 com.cnblogs.xiaobai 就是一个三级包名,第一级是com 第二级是 cnblogs 第三级是xiaobai
3.2 类中使用包的体现 导入包中的类
一般在每个类中的第一句话都是 package xxx 这句话就声明了该类所在的包。
我们在导入包中的类的时候一般使用import + 类路径的方式 例如我们要使用ArrayList类 可以是 import java.util.*; 导入util包下全部类 也可以使用 import java.util.ArrayList;只导入ArrayList类
导入静态变量或方法 : 使用 import static + 静态方法包路径或静态属性包路径
import java.util.*; //导入java.util包中全部的类 import java.util.ArrayList; //导入java.util.ArrayList;类 import static java.lang.Math.max; //导入Math类的静态max方法 import static java.lang.Math.PI; //导入静态常量PI(变量也一样)
4.创建对象 构造与析构、main方法、 this
4.1创建对象的方式
最常用的创建对象的方式就是 使用 new 关键字来创建对象,我们下面会详细介绍这种方式
java一共有几种创建对象的方式,请大家先有一个印象:(请注意 3.4两种方式是不会调用构造方法的)
1. 使用new 关键字 调用构造方法进行创建对象
2. 使用反射,调用newInstance方法创建对象(实质上内部调用了构造方法)
3.使用对象的clone方法,该方法直接从内存中进行影印对象,不调用构造方法
4.使用反序列化readObject方式创建的对象(直接从流中读取,不调用构造方法)
4.2 new 关键字
new 关键字是专门用来创建对象的,其作用就是以一个类为模板,创建除一个新的对象,该关键字会自动调用类的构造方法。(注意 构造方法不允许我们调用)
语法 : 类名 引用名 = new 类名();
Person p = new Pserson(); //注意new 后面的类名有括号,表示调用构造方法
4.3 构造方法、析构方法
4.3.1 构造方法
构造方法是java类中比较重要的方法,如果我们在声明一个类的时候没有为其指出明确的构造方法(即我们自己没有写构造方法),那么编译器会为我们的类自动生成一个无参的构造方法
一旦我们自己声明了一个构造方法,那么编译器就不会再为我们生成无参的构造方法了 (建议大家如果要自己声明有参构造方法,一定要先声明一个无参构造方法)
构造方法必须与类名完全相同,否则就不能算是构造方法。类中可以有多个构造方法,但每个构造方法的参数列表一定不同(这是方法的重载,后面会细说),可以通过this关键字进行调用(this关键字下面会讲到)。
注意 : 构造方法没有返回值 直接使用 public 类名() { } 的形式进行声明,该方法默认就会返回构建的对象,如果不希望外部构造对象,可以使构造方法私有化(后面封装会讲到)
public class Person{ //人类 public String name; //名字 public int age; //年龄 public int height; //身高 public int weight; //体重 public Person(){ //无参的构造方法 } }
4.3.2 析构方法
析构方法即是java对象被垃圾回收线程GC回收之前执行的方法,由于java是由垃圾回收线程自动回收内存,所以该方法使用较少,这里不再进行过多的描述,如果有兴趣可以自行百度 finalize()方法。
4.4 main 方法
main 方法可以说是比较重要的方法了,mian方法是程序的入口点,一个java程序就是从main方法开始执行的,一个类中只能有一个main方法作为程序的入口,并且main方法的书写格式是固定的
main方法的固定格式 : public static void main(String[] args) { 方法体 }
public calss Test{ public static void main(String[] args){ //程序开始执行的地方 } }
4.5 this关键字
this 关键字用来指代当前调用对象,在我们进行编程时,可能要在当前对象中调用当前对象的属性或方法,那么这时,我们就可以使用this关键字进行指代。(利用这个方法可以找到被局部变量隐藏的属性)
public class TestThis { private int aField; public TestThis(int afield) { this.aField = afield; //this指代当前对象,如果不用this,访问的就是形参 this.aMethod();//调用当前对象的aMethod 而不是其他对象 } public void aMethod() { //这是一个方法 } }
5.补充知识
暂时还没有想到,等想到了再回来补充吧!
以上是关于java-05 面向对象初级包创建对象的主要内容,如果未能解决你的问题,请参考以下文章