OOP(面向对象编程)基础一 —— Java语言
OOP是面向对象的一种设计和实现软件系统的方法。
OOP是在程序中模拟显示世界中的概念,现实世界中的所有事物都被视为对象。
一.那么在生活中那些物体是对象呢?
1. 生活中具体的某一个物体或事物就是一个对象。
2. 一些抽象的对象(生活中不存在,有人构想的对象)。
了解了什么是对象,那么我们应该如何去描述对象呢?
1. 特征
2. 行为(用途/功能)
例子:
“A在学习java,学分加1了。”
在这个例子中A就是对象。我们描述A这个对象,通过:“姓名为A”,“A有学分”这两个特征来描述,还通过“学习”这这个行为来描述。
生活中有许许多多的对象,我们需要对他们进行归类,形成——类。
二.生活中是如何对物体进行分类的呢?
相似的特征或相似的行为对对象进行分类。
我们构建类,可能是直接根据现有的场景构建,还可能是根据生活中类的特征和行为进行定义。
根据定义我们知道,类由两部分组成:
1. 属性 属性对应的是对象的特征
2. 方法 方法对应的是对象的行为
三.JAVA中,我们将现实生活中概念进行定义,形成java中的类。
类的基本结构:
public class 类名 { //声明属性的格式 private 数据类型 属性名; //定义方法的格式 public 返回值数据类型 方法名(数据类型 参数名,...){ //代码 } }
例子:
“A在学习java,学分加1了。”
public class Student { private String name; private double score; public void Study(){ } }
在程序中我们定义了类,我们要用类来实例化对象。
java中实例化对象和调用方法的格式
实例化对象的关键字是:new
格式:
//类名 对象名 = new 类名(); Student stu = new Student();
调用方法的格式:
//对象名.方法名(参数值,...); stu.setName("A"); stu.study();
对象是否可以作为参数进行传递?
可以的!
public class Hero { private String name; private double blood; //定义一个设置姓名属性的方法 public void setName(String na){ name = na; } //定义一个获取姓名属性值的方法 public String getName(){ return name; } //定义一个设置血量属性的方法 public void setBlood(double bl){ blood = bl; } //定义一个获取血量属性值的方法 public double getBlood(){ return blood; } //对象mon作为参数进行传递 public void Fight(Monster mon) { mon.setBlood(mon.getBlood()-1); System.out.println(name+"砍了"+mon.getName()+"一滴血"); } }
java中实例化对象会用到构造函数,那么什么是构造函数呢?
四.构造函数(构造函数又叫做构造方法、构造器)
因为Java会给每一个类提供一个默认的构造函数(不带任何参数的构造函数).
1.构造函数的格式
public 类名(数据类型 参数名,...){ //代码 }
例子:Student s1=new Student();
在这个例子中调用了
public Student(){}
这个构造函数,这就是java中在你没有定义构造函数时提供的默认的构造函数。
而当我们在类中定义了构造函数,则默认的构造函数将被覆盖,无法再继续使用了;只能使用我们定义的构造函数。
构造函数严格地说不算是“方法”——只因为它也可以传入参数。因而与方法存在许多区别。
2.普通方法和构造函数的区别
1.构造函数是不需要定义返回值数据类型的;普通方法必须要定义返回值数据类型。
2.构造函数的名字必须和类名完全相同;普通方法的名字可以自己定义。
3.构造函数是用来实例化对象的;普通方法是用来执行对象的某一个行为的。
4.构造函数每使用一次,就会实例化一个新的对象;普通方法在使用过程中,只要对象不变,那么还是同一个方法。
3.构造函数的用途
1.构造函数用来实例化对象的。
2.构造函数还可以用来给属性设置初始值。
五.方法的重载
实现方法重载的条件是:
1.方法的名字必须要完全相同
2.方法所带的参数个数、参数类型和参数的顺序必须要有一个不同。
调用是根据参数来决定的。
例子:
public void study(){ score++; System.out.println(name+"正在学习中,学分是"+score); } /** * 重载的学习方法 * @param score参数 * @reture 返回score学分 */ protected double study(double score){ this.score+=score; System.out.println(name+"正在学习中,学分是"+this.score); return this.score; }
上面的例子中有study方法的重载,注意:
虽然study的类型不一样,根据定义任然是方法个重载。
六.this关键字
当属性名和参数名相同的时候,使用this关键字来区分,加上this的表示属性,没有加的则是参数。
例子:
String name=”NetJava”; Student st2=new Student(name); //构造时 public Student(String name){ this.name=name; }
this表示的是什么呢?
this表示的是当前调用方法的对象。
在本例子中this表示的是st2所代表的对象。
本次OOP基础就先介绍到这里,下一期将从继承等方面继续进行介绍,谢谢大家!
- 【百度文库课程】Java语言基础与OOP入门学习笔记一
- 【备忘】北风网Java必备JAVA语言基础与OOP入门(骑士飞行棋门禁系统)
- 《JAVA语言基础与OOP入门》
- java软件工程师培训学习日记------java语言核心基础之面向对象编程
- JAVA基础(41)---面向对象编程
- 04.java语言基础-数组中的数组(多维数组)-多维数组的操作
- Java基础:面向对象编程的几个原则
- Java语言基础
- Java基础第一阶段——01_Java语言概述&HelloWorld
- Java语言基础 ——注释
- (一)、Java复习笔记之语言基础
- Java语言基础——运算符
- 黑马程序员--Java语言基础补充
- java语言基础知识
- java语言学习003_开发环境基础配置和安装(jdk,jre,eclipse&myeclipse)
- java语言基础|关于子类和父类的构造方法
- java语言基础笔记——语句,函数
- Objective-C基础之面向对象编程(OOP)——有关术语
- day01--Java基础语法--Java语言基础
- Java语言基础1--综合案例(数字加密问题):