引言:
面向对象Q是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的,在70年代的Smaltalk语言之中进行了应用,后来根据面向对象的设计思路,才形成C++,而由C++产生了Java这门面向对象的编程语言。
但是在面向对象设计之前,广泛采用的是面向过程,面向过程只是针对于自己来解决问题。面向过程的操作是以程序的基本功能实现为主,实现之后就完成了,也不考虑修改的可能性,面向对象,更多的是要进行子模块化的设计,每一个模块都需要单独存在,并且可以被重复利用,所以,面向对象的开发更像是一个具备标准的开发模式。
在面向对象定义之中,也规定了—些基本的特征:
(1)封装:保护内部的操作不被破坏;
(2)继承:在原本的基础之上继续进行扩充;
(3)多态:在一个指定的范围之内进行概念的转换。
对于面向对象的开发来讲也分为三个过程:OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程)
文章目录
类与对象的基本概念
类与对象时整个面向对象中最基础的组成单元。
类:是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法);
对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。
可以一句话来总结出类和对象的区别:类是对象的模板,对象是类的实例。类只有通过对象才可以使用,而在开发之中应该先产生类,之后再产生对象。类不能直接使用,对象是可以直接使用的。
类比现实生活,比如我们每个人,都是真真正正存在的实体,在计算机中即描述为对象。描述这些对象的时候,发现这些对象具有一些共同的特征描述这些对象的时候,发现这些对象具有一些共同的特征:
比如:
1.具有相同的属性:五官,四肢等等…
2.具有相同的行为:都要吃喝玩乐等等…
因此我们把具有相同属性和行为的一类对象抽象为类使用类来描述这类对象的特性。
在程序世界中,有很多的编程范式(思想),C语言就是面向过程的编程语言。java 和 C++ 是面向对象的编程语言。
类与对象的定义和使用
类和对象。谁先有?
类是描述某一些对象的统称,对象是这个类的一个实例而已。
这一类对象所具备的共同属性和行为(方法)都在类中定义。
创建类的语法:
class类名称{
// field(实例属性,成员属性)
// 行为 (实例方法,成员方法)
}
定义一个Person类:
class Person{
String name;
String sex;
int age;
void print(){
System.out.println("姓名"+ age + "性别"+ sex + "年龄" + age);
}
}
类定义完成之后,肯定无法直接使用。如果要使用,必须依靠对象,那么由于类属于引用数据类型,我们就能根据类来产生一个具体的对象
引用创建的语法:
//类名称 引用名称 = new 类名称 ();
Person per = new Person();
引用数据类型与基本数据类型最大的不同在于:引用数据类型需要内存的分配和使用。所以,关键字new的主要功能就是分配内存空间,也就是说,只要使用引用数据类型,就要使用关键字new来分配内存空间。
当一个实例化对象产生之后,可以按照如下的方式进行类的操作:
范例:
public class ClassAndObjects {
public static void main(String[] args) {
Person person = new Person();//声明并实例化对象
Person person2 = new Person();//声明并实例化对象
person.name = "彭于晏";//操作属性内容
person.age = 18;
person.sex = "男";
person.message();//调用类中的message方法
person2.name = "老八";//操作属性内容
person2.eat("hamburger");//调用类中的eat方法
}
}
class Person {
String name;
String sex;
int age;
void eat(String food) {
System.out.println(name + " 正在吃 " + food);
}
void message() {
System.out.println("姓名: " + name + " 性别: " + sex + " 年龄: " + age);
}
}
运行结果
//姓名: 彭于晏 性别: 男 年龄: 18
//老八 正在吃 hamburger
内存表示如下图:
关于引用数据类型的特殊值null
null在Java中表示"空引用",只有名字没有保存任何堆内存中的地址,如果直接使用值为null的引用去操作任何属性或方法(成员变量和成员方法)都会报错。
范例:
未完待续…