Java面向对象(一)
来源:互联网 发布:淘宝大学网店运营视频 编辑:程序博客网 时间:2024/05/24 20:08
一 类和对象
类是用于描述客观世界里某一类对象的共同特征,是人们从现实世界中抽象而来的概念。而对象是现实世界里真正存在的实体,是类的一个实例。比如:我们说的“学生”是一个抽象概念,它是指具有学生特征的一类人的总称,而我们说的某班的“张三”同学,是指存在于“学生”类里的一个实体,是真实存在的。
面向对象是一种优秀的程序设计思想,它的基本思想是使用类、对象、继承、封装等基本概念来进行程序设计。它是从现实世界中客观存在的事物(对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以现实世界中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把他们抽象的表示为系统中的类,作为系统的基本构成单元,这使得系统可以直接映射客观世界,并保持客观世界中事物及其相互关系的本来面貌。
1、 面向对象的基本特征
面向对象具有三个基本特征:封装、继承和多态。
封装是指将对象的实现细节隐藏起来,然后通过一些公用方法暴露该对象的功能;
继承是面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法。注意,Java中不支持多重继承。
多态指的是子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为特征,这意味着同一个类型的对象在运行时可能表现出不同的行为特征。
2、 类的定义
在Java中,类可以看成是自定义的一种数据类型,用类来定义的类型称为复合数据类型或者引用类型。类定义如下:
[类修饰符] class 自定义类名{
零个或多个构造方法
零个或多个成员(属性)
零个或多个行为(方法)
其它
}
类修饰符有public、final、abstract,默认,当然也可以省略这些修饰符
public:表示类为公用的,该修饰符修饰的类名一定要与该类所在的文件同名,同时一个Java源文件中,只能有一个public修饰的类。
final:表示当前类为最终类,即不能拥有子类。
abstract:表示该类为抽象类,不能实例化对象。
3、 成员变量的定义
定义格式如下:
[修饰符] 属性类型 属性名 [默认值]
修饰符有public、protected、private、static、final
属性类型:可以为简单类型或者复合类型
属性名:自定义的合法的标识符
默认值:对于定义的属性可以赋予默认值,若不给赋初值,对于不同的类型系统会对其自动初始化,其中int\short\byte=0;long=0l;double=0.0;float=0.0f;boolean=false;char=\u0000
4、 成员方法的定义
[修饰符] 方法返回类型 方法名称(形参列表){
方法体
}
修饰符:可以省略,也可以是public、protected、private、static、final,详见Java中的包
方法返回类型:可以是Java中的任何类型,用void表示该方法没有返回值。
方法名称:自定义的合法的Java标识符
形参列表:用于定义方法可以接受的参数。
二 对象的实例化和使用
类只是一个抽象模板,类中的成员和方法我们都无法使用,要想使用类中的成员和方法,就必须实例化对象。实例化对象的过程就是根据Java类的结构在JVM内存中开辟空间,并初始化相应的数据。
1、 对象的创建方法
类名 实例名=new 类名(参数)
例如: Student stu = new Student();
类名:我们自己定义的类名,也可以是Java类库本身已有的类的名称。
实例名: 自己定义的对象名称
参数:为实例化对象提供初始数据。
当实例化对象后,就可以通过对象名.方法名(或成员名)来调用其方法和成员。
2、 对象实例化过程
对象实例化过程就是按照类的模板在JVM堆中开辟内存,并做一些简单的初始化,然后将堆中内存的首地址赋给栈中的对象名。
三 Java中的变量
1、 成员变量
在类体里声明的变量为成员变量,也称为类的成员或属性。
类的成员变量不能直接使用,一定要实例化类的对象,通过对象才可以使用成员变量。静态变量可以通过类名直接调用。
成员变量的作用域为整个类体。
2、 局部变量
声明在方法体内部的变量称为局部变量。
局部变量前没有修饰符,作用域在整个方法体内有效。
局部变量一定要赋初值才可以使用,局部变量只有在使用时才开辟空间。
3、 静态变量(类变量)
用static关键字修饰的变量为静态变量,不需要实例化对象,可以直接通过 类名.变量名 来调用。
同一个类的各个对象之间共享静态变量的同一块内存。
static修饰的方法和static修饰的属性类似,都可以用类名去调用。
静态的方法不能调用非静态的 成员变量。
补充:Java程序的执行过程
首先将字节码文件加入内存;虚拟机检测字节码文件;系统为每个字节码文件生成class对象;初始化字节码文件的静态[变量、方法、代码块];程序入口(如main方法)。
javap 字节码文件 反编译字节码文件
四 Java中的方法
1、 构造方法
构造方法是Java中特殊的方法,用来为对象初始化数据;构造方法的方法名同所在类名相同。
构造方法没有任何的返回类型,当然也不能返回void,只能通过new或this去调用。
如果自定义类中没有任何人为声明的构造方法,系统会默认为当前类增加一个不带任何参数的空构造方法。当有自己声明的带参构造方法(没有声明无参的构造)时,不能使用无参构造方法。
注意:this关键字代表当前对象,用this变量可以解决类成员变量和局部变量同名的冲突,this变量还可以在当前构造方法里调用所在类的其它构造方法,但一定要把this写在构造方法除注释以外的第一行。
2、 方法重载
重载是指在同一个类中允许有重名的方法存在,但方法的参数必须不同,参数不同是指参数的个数不同 或参数的类型不同或参数的顺序不同,重载经常用于构造方法。
不能用方法的返回类型来决定方法的重载,可以百度“方法签名”。
3、 方法传参
在Java中方法的参数传递为值传递。
给方法传值,其实就是将实参值的副本(内存中实参的一份复制)传入方法内,而参数本身不受到 影响。
简单数据类型和复合数据类型都传递一份实参栈值的副本。注意:交换两个数的方法中 ,方法参数为基本类型时交换不了实参的值,但参数为引用类型时可以交换。
4、 可变的形参长度
JDK1.5之后,Java允许方法形参长度可变,允许为方法指定数量不确定的形参,多个参数的值会被当做数组传入。
一个方法中,只能有一个可变长度的形参,可变长度的形参要写在最后一个参数。例如:
//可变长度形参示例 public static void method(int i,String ... emails){ for(String str:emails) System.out.println(str); } //可变长形参与重载 public static void method1(String str){ System.out.println(str); } public static void method1(String ... str){ for(String s:str) System.out.println(s); } public static void main(String[] args){ //可变长形参示例 method(8,"abc","efg"); //可变长形参和重载 method1("one"); method1("one","two"); }
5、 main方法
main方法只提供JVM运行程序的入口方法,main方法里有一个String的字符串数组,用来接受命令行输入的参数。
- java面向对象(一)
- Java 面向对象(一)
- java面向对象(一)
- Java面向对象(一)
- java面向对象(一)
- Java面向对象(一)
- Java面向对象(一)
- java面向对象(一)
- JAVA面向对象(一)
- Java 面向对象(一)
- JAVA面向对象(一)
- Java面向对象(一)
- java面向对象(一)
- Java面向对象(一)
- java面向对象(一)
- Java面向对象(一)
- java 面向对象一
- java 面向对象 一
- Jsoup学习笔记1:解析字符串
- windows 系统框架 总结
- 【Unity】UGUI Text文本描线。。
- hadoop之伪分布式
- zz 专访阿里中间件高级专家沈询:只做最好的分布式数据库
- Java面向对象(一)
- 机器学习中分类与聚类的本质区别
- eclipse安装ADT慢的龟速问题
- 连接有道网页仿写有道词典
- GDB调试release程序
- linux在s3c2440上的移植(二)
- LZW算法和GIF数据压缩
- SQL to Mongo Mapping Chart
- 欢迎使用CSDN-markdown编辑器