1、面向对象主要内容:1. 方法的定义2. 类的定义3. 对象的实例化4. 构造方法5. 值传递6. 访问控制修饰符7. 面向对象的特性a) 封装b) 继承c) 多态8. 关键字9. 抽象类10. 接口11. 作业一、 方法的定义(函数)a) 方法的基本格式修饰符 返回值类型 方法名( 参数 1 ,参数 2 .)注: 1. 中的可以省略2.返回值类型:void 无返回值类型,还有基本数据类,引用数据类型3.参数可以有多个,通过传递赋值,没有实际的值,叫做形参4. () 是方法的象征5. 是方法体,必须写,不能省略b) 无参数的无返回值的方法c) 有参数的无返回值的方法d) 无参数的有返回值的方法e
2、) 有参数有返回值的方法二、 类的定义世界万物是有什么组成的,在 java 的世界中, 一切皆是对象。那我们怎么来定义类呢?那我们身边有哪些对象呢?比如:人具有特征:身高,体重,姓名,性别等等具有行为:吃饭,穿衣,睡觉,运动,思考,等等比如:汽车具有特征:颜色,品牌,性能等等具有行为:行驶,倒车,鸣笛等等比如:灯泡具有特征:价格,大小等等具有行为:开,关,亮,暗等等类的属性:对象所具有的特征类的方法:对象所执行的操作类可以看成一类对象的模板对象可以看成是类的一个实例(实体)举例:自己定义人(People)的类a) 成员变量(属性,字段(field),全局变量)1. 在方法的外部,类的内部声明2
3、. 成员变量可以不赋初始值使用b) 局部变量1. 在方法的内部声明2. 必须赋初始值之后才能使用注意:简单来说,在哪个括号中声明的,可以在哪个括号中使用练习:编写学生(Student)类 ,如下图(可以自由发挥,作为个人简历)三、 对象的实例化a) 格式: 类型 对象名 = new 类型 ();b) 作用: 在堆内存中创建一个类的对象c) 注意: 1. new 是关键字2. 自己声明的类也是一个类型3. 对象名必须是标识符4. 类型必须是引用数据类型,自己声明的所有的类都是引用数据类型四、 访问成员变量和成员方法用对象名.访问成员变量或方法例如: Student s = new Student
4、();s.name = “张三”; /修改学生的属性那么的值System.out.println(“姓名:”+s);/ 输出学生的姓名s.print();/调用学生类的 print 的方法,打印学生的所有信息Student s1 = new Student();System.out.println(s1.name);注: 1. s1 中 name 的值是多少呢2. 每一个对象中的成员变量都有自己的存储空间3. 每一个对象都只能改变自己空间中的属性五、 类与对象的关系 类与对象的关系 类: Student 对象 : s1 (学生 1) s2 (学生 2) 类: 类可以看成是一类对象的模板 类是抽
5、象的概念,只是模板 类只是对具体实物的抽象 对象: 对象是类的一个具体实例 对象是实体 对象是实际存在我们可观世界的实体六、 构造方法a) 定义1. 方法与类同名2. 没有返回值(void 是无返回值类型)3. 可以用访问控制修饰符修饰b) 作用1. 用 new + 构造方法创建一个对象,并执行构造方法中的代码2. 可以通过构造方法给成员变量赋初始值c) 注意1. 可以理解为构造方法是由返回值得,调用构造方法返回一个当前类的对象2. 也可以叫构造函数3. new + 带参数的构造方法也可以创建一个对象4. 也可以直接写 new +构造方法执行代码七、 值传递a) 基本数据类型传递的是值,不能改
6、变原来方法中局部变量的值b) 引用数据类型传递的是对象,可以改变对象中的值c) 不能改变对象的引用八、 访问控制修饰符关键字 本类 子类 同包 所有的类private default protected public 注:1. private , protected 不能修饰类2. 都可以修饰构造方法,限制构造方法的使用3. default 不能写出来九、 面向对象的特性a) 什么是面向对象 面向对象是 java 的基本思想 面向对象和面向过程都是编程语言的思想 面向过程强调的是对象的行为 面向对象是将功能封装起来,强调的是具有功能的对象 面向对象的三大特性: 封装,继承 和多态b) 面向对象
7、和面向过程的区别 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。c) 封装 封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 封装的思想: 1. 隐藏类的实现细节2. 迫使用户使用接口去访问3. 使代码更好的维护 如何封装1. 修改属性的可见性,设为 private2. 创建 getter 和 setter 方法,便于读写属性3. 在方法中加入对
8、属性的控制 封装的好处d) 继承 什么是继承 是指自然人死亡后,由法律规定的人或遗嘱指定的人依法取得死者遗留的个人合法财产的法律隐藏类的实现细节只能通过规定方法访问数据方便加入控制语句方便修改实现制度。 (这是法律中的继承) 是 java 中一个类( 子类)可以继承另外一个类( 父类) 中的所有的成员变量和方法 继承的思想减少代码的冗(rong)余,增加代码的重用 怎么继承动物(Animal)鸟 (Bird )鱼(fish) 家禽(poultry)麻雀Sparrow黄鹂Oriole金鱼Goldfish带鱼Hairtail鸡Chicken鸭Dock所有的鸟,鱼,家禽都属于是动物,应该拥有动物所有
9、的属性和方法,所以应该继承动物所有的特征和行为 ,金鱼带鱼都属于是鱼,所以应该继承鱼类所有的特征和行为。鱼 继承 动物 Fish extends Animal鸟 继承 动物 Bird extends Animal麻雀 继承 鸟 Sparrow extends Bird带鱼 继承 鱼 Hairtail extends Fish动物是鱼的父类(基类、超类)鸟是动物的子类(派生类)那带鱼能不能既继承鱼也继承动物呢?不能,因为 java 只支持单继承 继承的好处 继承是传递的,在一些比较一般的类的基础上构造、建立和扩充新类的最有效的方法 简化了人对事物的认识和描述,清晰体现相关类之间的层次结构关系 继承提供了软件的重用功能,减少代码和数据的冗余,大大增加了程序的重用性 继承通过增强一致性,减少了模块之间的接口和界面,大大增加了程序的易维护性 多重继承机制,一个类可以是多个类的父类,也可以从多个类中继承属性和方法,出于安全和可靠性的考虑,仅支持单重继承,通过接口机制来实现多重继承 继承的例子上述例子表明:子类继承父类,子类可用使用父类中的成员,就像是子类自己的一样 构造方法的特殊性 构造方法不能被继承 在调用子类构造方法的时候首先调用父类的构造再执行本类的构造方法 重载 重载的定义: 同一个类中 方法名相同 参数不同 返回值可以不一样 重载的例子: