面向对象的开发方法把软件系统看成各种对象的集合,对象就是最小的子系统,一组相关的对象能够组合成更复杂的子系统。面向对象的开发方法将软件系统看成各种对象的集合,接近人的自然思维方式。
对象是对问题领域中事件的抽象。对象具有以下特性:
1) 万物皆为对象。问题领域中的实体和概念都可以抽象为对象。例如学生,成绩单、教师、课和教室。
2) 每个对象都是惟一的。正如世界上不存在一模一样的叶子。(在Java内的体现为每个对象的类名不能相同。这里的类名指的是全路径的名称,比如java.lang.Number
和com.us.demo.Number
两者虽然名称都是Number类,但是类的全路径名称不同,所以这样的命名是合理的。)
3) 对象具有属性和行为。
例如小张,性别女,年龄22,身高1.6m, 体重40kg, 能够学习,唱歌。小张的属性包括姓名、性别、年龄、身高和体重,行为包括学习、唱歌。
例如一部手机,牌子是诺基亚、价格是2000元,银白色,能够拍照、打电话和收发短信等。这部手机的属性包括品牌类型type、价格PRice和颜色color,行为包括拍照takePhoto(),打电话call(),收发短信receiveMessage()和发短信sendMessage()。
4) 对象具有状态。状态是指某个瞬间对象的各个属性的取值。对象的某些行为会改变对象自身的状态,即属性的取值。
“` 例如小张本来体重为40kg,经为减肥后,体重减到45kg.
肥胖状态: 40kg | | 减肥行为 | 肥胖状态: 35kgpublic boolean reduceWeight(int oldWeight, int nowWeight){ // 减肥成功操作 ,将减肥的成果作为布尔类型返回出来。 } “`
5) 每个对象都是某个类的实例。小张和小王都属于学生类、中国和美国都属于国家类、中文和英文都属于语言类。
类是具有相同属性和行为的对象的集合。
同一个类的所有实例都有相同属性,但属性取值不一事实上相同,但是它们的状态不一定相同。例如小张和小王都属于学生类,都有姓名、性别、年龄、身高和体重这些属性,但是他们的属性取值不同。
同一个类的所有实例都有相同行为,意味着它们具有一些相同的功能。
类是一组具有相同属性和行为对象的模板。面向对象编程的主要任务就是定义对象模型中的各个类。
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语句返回数据或结束本方法的执行;注:不介绍构造方法。在面向对象章节会提到。
main()方法是Java应用程序的入口点,每个Java应用程序都是从main()方法开始运行的。作为程序入口的main()方法必须同时符合以下几个条件:
用public static修饰;返回类型为void;方法名为main;参数类型为String[]; 包含main方法的类又叫主程序类。Java程序启动后,就会运行方法的主程序类。
类创建好之后,通过new关键字创建具体对象。它有以下作用:
为对象分配内存空间,将对象的实例变量自动初始化为其变量类型的默认值;分配的指针通常存在堆内,分配的对象实例的空间通常存在于栈内;
如实例变量显示初始化,将初始化值赋给实例变量;调用构造方法;(具体的对象实例的生车过过程我们会在下一小节详细的阐述。)返回对象的引用;类是对象的模板。实例约等于对象。
类: 具有相同属性和行为的对象的集合。对象: 问题领域中的实体和概念都可以抽象为对象。实例: 每个对象都是类的实例。实例相当于 适用于某些类的模板的对象。属性: 也就是类的固有属性和特征。行为: 类的特有操作,Java内也称之为方法。[1]. Java内多态的理解
新闻热点
疑难解答