版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 java基础主要内容对象和类方法和属性构造器引用数据类型信息隐藏继承 面向对象的思想概述面向对象的编程思想力图使对计算机语言中对事物的的描述与现实世界中该事物的本来面目尽可能一致。 类(class)和对象(object)是面向对象方法的核心概念类是对一类事物描述,是抽象的、概念上的定义;对象是实际存在的该类事物的每个个体,因而也称实例(instance)。 类定义一个类public class Person 给类加上属性public class Person int name; 给类加上行为public class Person int name; public void sing() /i
2、n the sing method; 类的组成由属性(实例变量)和方法属性-实例变量 权限 修饰 类型 变量名 =初值;private int age =0;private boolean flag=false;public class PersonPrivate String userName;Private int age;方法权限 修饰 返回值类型 方法名 (形参列表) 方法体;public class Personpublic void say()public String setXXXX(String str)方法参数的传递public void say(String songNam
3、e)public void action()say(“give it to me”);理解参数传递的含义实参形参方法注意:在方法内定义变量时须:1.除了final不加任何修饰符.2.使用之前必须初始化.创建类的对象声明并创建一个Person类的对象,将该对象命名为p Person p = new Person();在调用方法前必须产生一个对象调用对象的方法调用对象p中的方法p.sing();信息隐藏使用者对类内部定义的数据(对象的成员变量)的直接操作会导致数据的错误、混乱或安全性问题。public class Person public int age;public class Test pu
4、blic static void main(String args)Person b = new Person();b.age = -3; 封装Java中通过将数据封装、声明为私有的(private),再提供一个或多个公开的(public)方法实现对该属性的操作封装的好处封装的好处隐藏一个类的实现细节;使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;便于修改,增强代码的可维护性;封装class Person private int age;public void setAge(int i)if(i130) return;age = i; public
5、int getAge() return age;public class Testpublic static void main(String args)Person b = new Person();b.setAge(3);b.setAge(300);System.out.println(b.getAge();实例变量与局部变量实例变量声明在类中而不是方法中局部变量声明在方法中局部变量使用前必须初始化实例变量有默认值局部变量没有默认值Public class Foopublic void go() int x; int z = x+3;/无法编译变量的比较=与equals=用于比较两个pri
6、mitive 主数据类型或者判断两个引用是否引用同一个对象继承假定有两个类,它们或多或少地具有一组相同的属性和方法。可以创建一个具有两个类的共同属性的父类,而不声明两个不同的类,因此,子类可以继承父类的全部或部分属性。在OOP术语中 父类还可以成为超类或基类,子类又称为派生类。继承继承继承关系的验证Is aHas a为什么使用继承继承的实现手段是派生和扩展实现了代码重用定义共同的协议如何使用继承extends要继承一个类,可以使用extends关键字,意味着扩展父类的功能,java中只支持单一继承。Public class VipUser extends User/.类的继承为描述和处理个人信
7、息,定义类Personpublic class Person public String name; public int age; public Date birthDate; public String getInfo() .Person+name : String +age : int+birthDate : Date+getInfo() : String类的继承 为描述和处理学生信息,定义类Student:public class Student public String name; public int age; public Date birthDate; public Stri
8、ng school; public String getInfo() .Student+name : String +age : int+birthDate : Date+school : String+getInfo() : String类的继承 (3) 通过继承,简化Student类的定义:public class Person public String name; public int age; public Date birthDate; public String getInfo() .public class Student extends Person public Strin
9、g school;Person+name : String +age : int+birthDate : Date+getInfo() : StringStudent+school : String类的继承类继承语法规则: class extends *Java只支持单继承,不允许多重继承一个子类只能有一个父类一个父类可以继承出多个子类单继承举例Person+name : String +age : int+birthDate : Date+getInfo() : StringStudent+school : StringSoldierOfficerGraduate+major : histo
10、ry+register() : void构造方法不能继承子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法在一个Java类中可以通过两种方式获得构造方法使用系统默认的无参构造方法显式定义一个或多个构造方法一旦显式定义了构造方法,则系统不再提供默认构造方法定义共同的协议定义共同的协议通过继承定义相关类的共同协议方法覆盖的规则重写方法的重写方法的重写在子类中可以根据需要对从父类中继承来的方法进行改造重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型重写方法不能使用比被重写方法更严格的访问权限不能抛出更大的异常方法重写举例public class Person protect
11、ed String name;protected int age;public String getInfo() return Name: + name + n +age: + age; public class Student extends Person protected String school;public String getInfo() return Name: + name + nage: + age + nschool: + school; 方法重载在同一个类中可以定义多个同名方法public class PrintStreampublic void println(int
12、 i) public void println(float f) public void println(String s) 重载方法的参数列表必须不同 重载方法的返回值类型可以相同,也可以不同继承继承的实现手段是派生和扩展实现了代码重用定义共同的协议(重写)Animal dog= new Dog();Animal cat = new Cat();通过声明为父类型的对象引用来引用他的子类型对象多态多态在Java中,子类的对象可以替代父类的对象使用一个对象只能有一种确定的数据类型一个引用类型变量可能指向(引用)多种不同类型的对象Person p = new Student();Object o
13、= new Person();o = new Student(); 多态一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法Student m = new Student();m.school = pku; /合法Person e = new Student(); e.school = pku;/非法多态传递参数和返回值都可以是多态pubic Animal getAnimal()Public void age(Animal animal)多态性应用同类收集( homogenous collections)MyDate m = new MyD
14、ate2;m0 = new MyDate(22, 12, 1964);m1 = new MyDate(22, 7, 1964);异类收集(heterogeneous collections)Person p= new Person3;p0 = new Student();/学生p1 = new Person();/人p2 = new Graduate();/研究生多态性应用方法声明的参数类型为父类类型,可以使用子类的对象作为实参调用该方法public class Test public void method(Person e) / e.getInfo();public static void
15、 main(Stirng args) Test t = new Test(); Student m = new Student(); t.method(m);对象造型 (Casting )对Java对象的强制类型转换称为造型从子类到父类的类型转换可以自动进行从父类到子类的类型转换必须通过造型(强制类型转换)实现无继承关系的引用类型间的转换是非法的Animal a = new Dog();Dog d = (Dog)a;instanceof在casting前可以使用instanceof操作符测试一个对象的类型if(e instanceof Student)instanceof 操作符public
16、class Test public void method(Person e) System.out.pritnln(e.getschool(); /非法 if(e instanceof Student) Student me = (Student)e; System.out.println(me.getSchool(); public static void main(String args) Test t = new Test(); Student m = new Student(); t.method(m); instanceof 操作符public class Person exten
17、ds Object public class Student extends Person public class Graduate extends Person -public void method1(Person e) if (e instanceof Student) / 处理Student类型及其子类类型对象 else if (e instanceof Graduate) /处理Graduate类型及其子类类型对象 else /处理Person类型对象Object 类Object类是所有Java类的根父类如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object
18、类 public class Person .等价于:public class Person extends Object .this 关键字用于任何实例方法内,指向当前对象this 的值指向对其调用当前方法的对象 this 关键字可在需要当前类类型的对象引用时使用 48this 关键字public class ThisDemo int x; ThisDemo(int x) this.x=x; public void passingValue() System.out.println(x 等于 +x); public static void main(String args) ThisDemo test = new ThisDemo(10); test.passingValue(); 49关键字super举例public class Person private String name; private int age; private Date birthDate; public String getInfo() return Name: + name + nage: +
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国单硝酸异山梨酯缓释胶囊行业当前经济形势及投资建议研究报告
- 2024-2030年中国医药用品项目可行性研究报告
- 2024-2030年中国医用液体保温柜行业发展形势与应用前景预测报告
- 2024年度供应链管理合同的供应链服务内容和合同标的2篇
- 黄山祁门县县属国有企业招聘笔试真题2023
- 2024-2030年中国功能性内衣行业市场规模分析及投资前景研究报告
- 河北工程大学招聘工作人员笔试真题2023
- 2024-2030年中国出入境检验检疫市场运行动态与发展战略分析报告
- 2024-2030年中国冻干鲍鱼市场竞争格局展望及投资策略分析报告
- 2024-2030年中国冷库及冷风机市场发展状况及投资前景规划研究报告
- 学校新生结核病筛查安排剖析
- 政工类人员培训课件
- 2024年大学试题(财经商贸)-博弈论笔试历年真题荟萃含答案
- 监狱积分考核工作总结
- 影视鉴赏-第六章-影视艺术的鉴赏与评论
- 全科医师师资培训课件
- 优化营商环境重点知识讲座
- 城市营销方案书
- 双闭环直流调速系统-
- 中国老年教育发展的背景和历史回顾
- 人工智能原理与方法智慧树知到课后章节答案2023年下哈尔滨工程大学
评论
0/150
提交评论