首页 > 编程 > Java > 正文

Java基础(五)OOP面向对象之(一) 面向对象思想初识

2019-11-06 07:15:11
字体:
来源:转载
供稿:网友

java基础(五)OOP面向对象之(一) 面向对象思想初识

面向对象类及其基本构成类创建实例名词解析:类、对象、实例主要解决的三大问题:封装、继承和多态

1. 理解面向对象的思想

面向对象的开发方法把软件系统看成各种对象的集合,对象就是最小的子系统,一组相关的对象能够组合成更复杂的子系统。面向对象的开发方法将软件系统看成各种对象的集合,接近人的自然思维方式。

对象是对问题领域中事件的抽象。对象具有以下特性:

1) 万物皆为对象。问题领域中的实体和概念都可以抽象为对象。例如学生,成绩单、教师、课和教室。

2) 每个对象都是惟一的。正如世界上不存在一模一样的叶子。(在Java内的体现为每个对象的类名不能相同。这里的类名指的是全路径的名称,比如java.lang.Numbercom.us.demo.Number两者虽然名称都是Number类,但是类的全路径名称不同,所以这样的命名是合理的。)

3) 对象具有属性和行为。

例如小张,性别女,年龄22,身高1.6m, 体重40kg, 能够学习,唱歌。小张的属性包括姓名、性别、年龄、身高和体重,行为包括学习、唱歌。

例如一部手机,牌子是诺基亚、价格是2000元,银白色,能够拍照、打电话和收发短信等。这部手机的属性包括品牌类型type、价格PRice和颜色color,行为包括拍照takePhoto(),打电话call(),收发短信receiveMessage()和发短信sendMessage()。

4) 对象具有状态。状态是指某个瞬间对象的各个属性的取值。对象的某些行为会改变对象自身的状态,即属性的取值。

“` 例如小张本来体重为40kg,经为减肥后,体重减到45kg.

肥胖状态: 40kg | | 减肥行为 | 肥胖状态: 35kg

public boolean reduceWeight(int oldWeight, int nowWeight){ // 减肥成功操作 ,将减肥的成果作为布尔类型返回出来。 } “`

5) 每个对象都是某个类的实例。小张和小王都属于学生类、中国和美国都属于国家类、中文和英文都属于语言类。

类是具有相同属性和行为的对象的集合。

同一个类的所有实例都有相同属性,但属性取值不一事实上相同,但是它们的状态不一定相同。例如小张和小王都属于学生类,都有姓名、性别、年龄、身高和体重这些属性,但是他们的属性取值不同。

同一个类的所有实例都有相同行为,意味着它们具有一些相同的功能。

2. 创建类

类是一组具有相同属性和行为对象的模板。面向对象编程的主要任务就是定义对象模型中的各个类。

package sample; // 常有的Java内的Bean类 也叫Model类 或者 POJO类 public class Teacher { /**attributes of a teacher*/ private String name; private int age; private double salary; /** Creates a new instance of Teacher */ public Teacher(String name, int age, double salary) { this.salary = salary; this.age = age; this.name = name; } /**Operations on properties */ /** get the name of this teacher */ public String getName() { return name; } /**get the salary of this teacher */ public double getSalary() { return salary; } /**get the age of teacher teacher */ public int getAge() { return age; } …… }

代码解析:

1) package sample; 包声明语句,将Java类放到特定的包中,便于类的组织、权限访问和区分名字相同的类。

2) public class Teacher {…} 类的声明语句,类名为Teacher, public修饰符意味着这个类可以被公开访问;

声明类的格式:

class 类名 { 类内容 }

3) private String name; 类的属性(也称为成员变量)的声明语句;Teacher类有一个name属性,字符串类型,private修饰符意味着这个属性不能被公开访问。

4) public String getName() { return name; } 方法的声明语句和方法体。方法名为getName,不带参数,String表明返回类型为String。public表明这个方法可以被公开访问。getName后紧跟的大括号为方法体,代表getName的具体实现。

声明方法的格式:

返回值类型 方法名 (参数列表) { 方法体 }返回值类型是方法的返回数据的类型, 如果返回值类型为void, 表示没有返回值。方法名是任意合法的标识符;一般的类名为单词的首字母大写,一般的方法名为首个单词的首字母小写,其余单词的首字母大写。参数列表可包含零个或多个参数,参数之间以逗号”,”分开。可以使用可变参数类型。方法体每个语句用”;”结束;方法体中使用return语句返回数据或结束本方法的执行;

注:不介绍构造方法。在面向对象章节会提到。

3. 创建实例

public static void main(String[] args) { Teacher gzhu = new Teacher("George Zhu", 30, 10000); System.out.println("Teacher: " + gzhu.getName()); System.out.println("/tAge: " + gzhu.getAge()); System.out.println("/tSalary: " + gzhu.getSalary()); }

main()方法是Java应用程序的入口点,每个Java应用程序都是从main()方法开始运行的。作为程序入口的main()方法必须同时符合以下几个条件:

用public static修饰;返回类型为void;方法名为main;

参数类型为String[]; 包含main方法的类又叫主程序类。Java程序启动后,就会运行方法的主程序类。

类创建好之后,通过new关键字创建具体对象。它有以下作用:

为对象分配内存空间,将对象的实例变量自动初始化为其变量类型的默认值;分配的指针通常存在堆内,分配的对象实例的空间通常存在于栈内;

如实例变量显示初始化,将初始化值赋给实例变量;调用构造方法;(具体的对象实例的生车过过程我们会在下一小节详细的阐述。)返回对象的引用;

4. 名词解析:类、对象、实例

类是对象的模板。实例约等于对象。

类: 具有相同属性和行为的对象的集合。对象: 问题领域中的实体和概念都可以抽象为对象。实例: 每个对象都是类的实例。实例相当于 适用于某些类的模板的对象。属性: 也就是类的固有属性和特征。行为: 类的特有操作,Java内也称之为方法。

5. 封装、继承、多态

封装: 将类中的某些属性和方法的实现细节隐藏。为了保障类的安全性;以及方便类的使用。继承: 为了重用某些类中的特性和方法。为了便于类的维护和扩展;为了方便类的使用。 (继承的权限访问权限方式,Java采用的是单继承多个实现的方式。但是所有的类对象默认继承Object类?多继承?基本数据类型是否也是类?)多态: 指允许不同的类的对象对于同一方法做出响应。即同一消息根据发送对象的不同二采用多种不同的行为方式。 (对于多态,你既需要如何调用子类的方法,可需要知道如何调用父类的方法。)

6. 参考文献

[1]. Java内多态的理解


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表