面向对象和面向对象的高级概念_第1页
面向对象和面向对象的高级概念_第2页
面向对象和面向对象的高级概念_第3页
面向对象和面向对象的高级概念_第4页
面向对象和面向对象的高级概念_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象主要内容:方法的定义类的定义对象的实例化构造方法值传递访问控制修饰符面向对象的特性a)封装b)继承c)多态关键字抽象类接口作业方法的定义(函数)a)方法的基本格式修饰符返回值类型 方法名(参数1,参数2 .)(注:1.中的可以省略返回值类型:void无返回值类型,还有基本数据类,引用数 据类型参数可以有多个,通过传递赋值,没有实际的值,叫做形参()是方法的象征是方法体,必须写,不能省略b)无参数的无返回值的方法c)有参数的无返回值的方法d)无参数的有返回值的方法e)有参数有返回值的方法二、类的定义世界万物是有什么组成的,在java的世界中,是对象。那我们怎么来定义类呢?那我们身边有哪些

2、对象呢?比如:人具有特征:身高,体重,姓名,性别等等具有行为:吃饭,穿衣,睡觉,运动,思考,等等 比如:汽车具有特征:颜色,品牌,性能等等具有行为:行驶,倒车,鸣笛等等比如:灯泡具有特征:价格,大小等等具有行为:开,关,亮,暗等等类的属性:对象所具有的特征类的方法:对象所执行的操作类可以看成一类对象的模板对象可以看成是类的一个实例(实体)举例:自己定义人(People)的类a)成员变量(属性,字段(field),全局变量)在方法的外部,类的内部声明成员变量可以不赋初始值使用b)局部变量在方法的内部声明必须赋初始值之后才能使用注意:简单来说,在哪个括号中声明的,可以在哪个括号中使用练习:编写学生

3、(Student)类,如下图(可以自由发挥,作为个人简历)学生类Sit姓名濒专业兴趣显示学员个人信息三、对象的实例化a)格式: 类型对象名=new类型();b)作用:在堆内存中创建一个类的对象c)注意:1. new是关键字自己声明的类也是一个类型对象名必须是标识符类型必须是引用数据类型,自己声明的所有的类都是引用数据类型访问成员变量和成员方法用对象名.访问成员变量或方法例如:Student s = new Student(); = “张三”;修改学生的属性那么的值System.out.println(“姓名:”+s);/输出学生的姓名s.print();/调用学生类的print的方

4、法,打印学生的所有信息Student si = new Student();System.out.println();注:si中name的值是多少呢每一个对象中的成员变量都有自己的存储空间五、每一个对象都只能改变自己空间中的属性五、类与对象的关系类与对象的关系/ 类:Student/ 对象:si (学生1) s2 (学生2)类:/类可以看成是一类对象的模板/类是抽象的概念,只是模板/类只是对具体实物的抽象对象:/对象是类的一个具体实例/对象是实体/对象是实际存在我们可观世界的实体六、构造方法a)定义方法与类同名没有返回值(void是无返回值类型)可以用访问控制修饰符修饰b)作用用

5、new +构造方法创建一个对象,并执行构造方法中 的代码可以通过构造方法给成员变量赋初始值c)注意可以理解为构造方法是由返回值得,调用构造方法返回 一个当前类的对象也可以叫构造函数new +带参数的构造方法也可以创建一个对象也可以直接写new +构造方法执行代码七、值传递a)基本数据类型传递的是值,不能改变原来方法中 局部变量的值b)引用数据类型传递的是对象,可以改变对象中的 值c)不能改变对象的引用关键字本类子类同包所有的类privateVdefaultVVprotected关键字本类子类同包所有的类privateVdefaultVVprotectedVVVpublicVVVV注:priva

6、te , protected 不能修饰类都可以修饰构造方法,限制构造方法的使用3- default不能写出来九、面向对象的特性a)什么是面向对象/面向对象是java的基本思想/ 面向对象和面向过程都是编程语言的思想/ 面向过程强调的是对象的行为/面向对象是将功能封装起来,强调的是具有功能的对象/面向对象的三大特性:封装,继承 和多态b)面向对象和面向过程的区别/面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步 骤一步一步实现,使用的时候一个一个依次调用就可以了。/面向对象是把构成问题事务分解成各个对象,建立对象的目的不是 为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤 中

7、的行为。c)封装/封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息 的操作和访问/封装的思想:隐藏类的实现细节迫使用户使用接口去访问使代码更好的维护/如何封装修改属性的可见性,设为private创建getter和setter方法,便于读写属性在方法中加入对属性的控制/封装的好处隐藏类的方便修改实现实现细节方便修改实现方便加入控制语句只能通过规方便加入控制语句定方法访问数据d)继承/什么是继承是指自然人死亡后,由法律规定的人或遗嘱指定的人依法取得死者遗留的个人合法财产的法律制度。(这是法律中的继承)是java中一个类(子类)可以继承另外一个类(父类

8、)中的所有的成员变量和方法/继承的思想减少代码的冗(rong )余,增加代码的重用/怎么继承鱼继承动物 鸟继承动物 麻雀继承鸟 带鱼继承鱼鱼继承动物 鸟继承动物 麻雀继承鸟 带鱼继承鱼所有的鸟,鱼,家禽都属于是动物,应该拥有动物所有的属性和方法,所以应该继承动物所有的特征和行为,金鱼带鱼都属于是鱼, 所以应该继承鱼类所有的特征和行为。Fish extends AnimalBird extends Animal Sparrow extends Bird Hairtail extends Fish动物是鱼的父类(基类、超类)鸟是动物的子类(派生类)那带鱼能不能既继承鱼也继承动物呢?不能,因为jav

9、a只支持单继承/继承的好处继承是传递的,在一些比较一般的类的基础上构造、 建立和扩充新类的最有效的方法简化了人对事物的认识和描述,清晰体现相关类之 间的层次结构关系继承提供了软件的重用功能,减少代码和数据的冗 余,大大增加了程序的重用性继承通过增强一致性,减少了模块之间的接口和界 面,大大增加了程序的易维护性多重继承机制,一个类可以是多个类的父类,也可 以从多个类中继承属性和方法,出于安全和可靠性 的考虑,仅支持单重继承,通过接口机制来实现多 重继承/继承的例子class EinployeE String name;public void showName() ISystem.out.prin

10、t In(name);5 String department;public void showinfo() showNaine ();上述例子表明:子类继承父类,子类可用使用父类中的成员,就像是子类自己的一样/构造方法的特殊性构造方法不能被继承在调用子类构造方法的时候首先调用父类的构造再执行本类的构造方法,重载重载的定义:同一个类中方法名相同参数不同返回值可以不一样 重载的例子:publicstaticvoidchange()(publicstaticvoidchange(int i)publicstaticvoidchange(String s) (重写的定义:子类中 方法名相同 参数相同

11、返回值相同 不能有比父类有更严格的访问权限 不能抛出比父类更多的异常重写的例子public class Superclass public void print() public boolean aa() return false;public class Subclass extends SuperClass public void print()public boolean aa return false;public void aa()(e)多态/什么是多态多态顾名思义就是多种形态的意思一类的事物存在多种形态,不同的对象收到同一个消息可以产生 完全不同的效果。/多态的前提继承重写向上转型

12、/多态的体现狗糖物狗旗new狗();父类的引用指向子类的对象用户发送了一个通用的对象,实现的细节有接受对象自行决定/对象的引用父类的引用指向子类对象,不能访问子类中特有的方法父类的引用只能访问父类的成员,但执行的是子类重写父类的成 员/多态的作用提高了程序的扩展性和后期的可维护性增强了软件的透明度,可理解性,可扩展性增强了灵活性和重用性多态是面向对象的重要思想,面向对象没有多态也就失去了色彩/ 注意存在继承或者实现存在重写方法/强制转换动物dw = new狗();可以将dw表示的对象转化为”狗”对象可以想象为是一个贴着动物标签的盒子中放一个狗对象不能任意转换类型,必须转换为对应的类型用关键字i

13、nstanceof(实例类型判断运算符)判断是否是某个类 型/ 实验1动物园有这些动物:狗、兔子等,饲养员每天都会给这些动物喂 食,狗喜欢吃骨头、而兔子喜欢吃胡萝卜,通过Java程序模拟 饲养员喂食/实验2编写一个类Shape类,具有一个draw方法,派生出三个子类Circle(圆)Triangle(三角形),Rectangle(矩形),子类中重写了父类的方法。编写一个测试类Test,具有一个方法test,该方法的参数类型为Shape ,然后在此方法体中调用Shape的draw方法.在TestShape中添加main方法,调用Test的test方法,随意生成一个Shape子类的实例,并将该实例

14、当做参数传入。十、关键字a)Thisthis可以看成是一个变量,它的值是当前对象的引用在类的成员方法的使用this关键字代表使用该方法的对象的引用可以使用this关键字处理成员变量和参数重名的问题不能用在static代码块中可以在构造方法中用this(参数列表)访问本类中的其他构造方 法,必须放在第一行b)Supersuper可以看成是一个变量,它的值代表的是当前对象父类的引 用可以在类的成员方法中表示父类对象一般不在static代码块中应用在构造方法中第一句默认是的super(),必须放在第一行Static用static修饰的方法叫做静态的方法,用static的修饰的变量是 静态的变量,在系

15、统加载类的时候,首先加载静态的变量和方法静态的方法不能直接调用非静态的成员非静态的可以直接访问静态的静态的方法不需要所属类的任何实例引用,用类名.成员可以直 接引用非静态的仅限于实例引用PackageJava的包机制用点来表示包的层次结构必须放到java文件的第一行(在package关键字上面只能有注 释和空白)Import导包关键字引用不同包中的类必须导包程序在执行的时候会自动加载java.lang包中的所有类,所以在 用到lang包中的类的时候不用导包Final用final修饰的变量不能被改变用final修饰的方法不能被重写用final修饰的类不能被继承十一、抽象类抽象类的特点抽象类用ab

16、stract修饰抽象类不能直接实例化抽象类中可以用main方法用abstract修饰的方法是抽象的方法抽象的方法只有声明,没有实现有抽象方法的类必须是抽象类抽象类一般作为其他类的父类抽象类作为其他类的父类,抽象的方法必须重写抽象类可以没有抽象的方法举例a)由于Shape类计算周长和面积的方法无法确定,那么就可以 将这样的方法声明为抽象的,以便在具体的子类中进行实 现。十二、接口接口的原理在软件工程中,经常将一个大的项目分由不同的开发小组共同开发, 各个小组的开发工作是并行的。在很多时候,对于不同小组的程序员来 说,清楚地说明各自的软件如何相互作用,并就此达成统一“约定”是很 重要的。这种情况下

17、,每一小组都可以在对其他小组怎么编写代码一无 所知的情况下,就能编写自己的代码,并且各自小组编写的代码能很好 的协同工作。接口就是这样的“约定”。接口的特点接口可以看做是一个特殊的抽象类接口不能直接实例化接口中只有常量和抽象的方法接口中没有main方法接口可以被类实现,实现的关键字是implements类实现接口就必须实现类的方法接口之间可以多继承接口与类之间也存在多态性(也可以理解接口是类的父类)十三、作业某公司的雇员分为以下若干类:Employee:这是所有员工总的父类,属性:员工的姓名,员 工的生日月份。方法:getSalary(int month)根据参数月份来 确定工资,如果该月员工过生日,则公司会额外奖励100元。SalariedEmployee: Employee的子类,拿固定工资的员工。 属性:月薪HourlyEmployee: Employee

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论