您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Java面向对象-笔记
二、面向对象一、类和对象1对象:用来描述客观事物的一个实体,由一组属性和方法构成*属性——对象具有的各种特征*方法——对象执行的操作2类:具有相同属性和方法的一组对象的集合类是对象的抽象。类定义了对象将会拥有的属性和方法3类和对象的关系类是抽象的概念,对象是一个实体。4定义类*定义属性的语法[访问修饰符]class类名{//属性//方法}*类名:帕斯卡命名规则(每一个单词的首字母大写)5属性*定义属性的语法[访问修饰符]数据类型属性名*属性名:驼峰命名规则(即变量命名规则)6方法*定义方法的语法[访问修饰符]返回值类型方法名(参数类型参数1,参数类型参数2,……){//……省略方法体代码}*方法名:驼峰命名规则(即变量命名规则)7创建对象*创建对象的语法类名对象名=new类名();*对象名:驼峰命名规则(即变量命名规则)8使用对象*使用对象的语法对象名.属性对象名.方法名()9对象数组*对象数组的数据类型就是具体的类名.*对象数组内存储的就是这个类的对象*每个数组元素就是一个对象*根据下标找到某个元素*按照对象对的使用方法使用该元素10方法的返回值*如果方法具有返回值,方法中必须使用关键字return返回该值,返回值类型为该值的类型*返回值只能有一个*如果方法没有返回值,返回值类型为void11方法的参数*方法名()无参方法publicvoidshow(){}*方法名(参数)带参方法publicvoidshow(inti,Strings,intj){}publicvoidshow(inti,Strings){}(1)方法有没有参数和方法有没有返回值,是两码事,毫无关系.(2)带参方法,参数个数可以有一个,也可以有多个,多个参数之间用逗号隔开.(3)带参方法,参数名字可以随意取,符合变量命名规则.(4)方法定义处的参数叫形式参数(形参),方法调用处传的值叫实际参数(实参).(5)形参和实参名字可以不一样,但是数据类型要一样,个数要一样,顺序要一样方法的调用.12方法的传参*基本数据类型操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值。*引用数据类型(类、数组和接口)赋值是把原对象的引用(可理解为内存地址)传递给另一个引用13构造方法*构造方法的语法[访问修饰符]方法名([参数列表]){//方法体的代码}*方法名:与类名相同*如果没有自定义有参构造方法,则系统会自动添加默认无参构造方法*如果自定义了有参构造方法,则系统不会自动添加默认无参构造方法14this的用法*调用属性this.health=100;this.name=大黄;*调用方法this.print();*调用构造方法this();//如果使用,必须是构造方法中的第一条语句.this(小黑,100,100,雄);*使用this的注意this是在对象内部只带自身的引用.this只能调用实例变量、实例方法和实例构造方法.this不能调用类变量和类方法,this也不能调用局部变量.15方法的重载*同一个类中.*方法名相同.*参数个数或类型不同.*与返回值、访问修饰符无关.16构造方法重载*方法名相同.*参数项不同.*与返回值、访问修饰符无关.17成员变量和局部变量*成员变量:类的范围内声明的,在类的整个范围内都能用。也叫全局变量.*局部变量:局部(方法里、代码体里)声明,在声明的范围内使用,叫局部变量.*局部变量在使用前必须赋初始值全局变量即使使用前没有赋初始值,系统默认会初始化.*局部变量可以和全局变量同名,也可以不同名。同名的时候,就近使用.二、封装1封装的概念*将类的某些信息隐藏在类内部,不允许外部程序直接访问,*而是通过该类提供的方法来实现对隐藏信息的操作和访问。2封装的两个大致原则*把尽可能多的东西藏起来,对外提供便捷的接口*把所有的属性藏起来3封装的步骤*修改属性的可见性private*设置setter/getter()方法*设置属性的存取显示4包的作用*允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件*防止命名冲突区分名字相同的类*有助于实施访问权限控制5包命名规范*包名由小写字母组成,不能以圆点开头或结尾*包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名*包名后续部分依不同机构内部的规范不同而不同6JDK提供基本包*java.lang:虚拟机自动引入*java.util:提供一些实用类*java.io:输入、输出7包的使用package声明包;//必须位于第一行(忽略注释行)import导入包;//可以有多句importjava.util.*;//导入java.util包中所有类importjava.util.Scanner;//导入指定包中指定类8访问修饰符9static修饰符可以用来修饰*成员变量静态变量,可以直接通过类名访问*成员方法静态方法,可以直接通过类名访问*代码块静态代码块,当Java虚拟机加载类时,就会执行该代码块10Static变量1、类变量(静态变量)*被static修饰的变量*在内存中只有一个拷贝*类内部,可在任何方法内直接访问静态变量*其他类中,可以直接通过类名访问2、实例变量*没有被static修饰的变量*每创建一个实例,就会为实例变量分配一次内存*实例变量可以在内存中有多个拷贝,互不影响11static方法1、静态方法:可直接通过类名访问*静态方法中不能使用this和super*不能直接访问所属类的实例变量和实例方法*可直接访问类的静态变量和静态方法2、实例方法:通过实例访问*可直接访问所属类的静态变量、静态方法、实例变量和实例方法3、静态方法必须被实现*main()就是最常用的静态方法4、static代码块*类的构造方法用于初始化类的实例,类的静态块用于初始化类,给类的静态变量赋值三、继承1继承的语法[访问修饰符]classSubClassextendsSuperClass{}2继承的内容*public和protected修饰的属性和方法,不论子类和父类知否在同一个包里*可以继承默认访问修饰符修饰的属性和方法,但是子类和父类必须在同一个包里*无法继承父类的构造方法以及private修饰的属性和方法3继承的注意*子类与父类是is-a关系*Java中只支持单根继承,即一个类只能有一个直接父类4super关键字*super使用的语法访问父类构造方法:super(参数)访问父类属性/方法:super.父类属性/方法5方法重写的规则*方法名相同*参数列表相同*返回值类型相同或者是其子类*访问权限不能严于父类*父类的静态方法不能被子类覆盖为非静态方法*父类的非静态方法不能被子类覆盖为静态方法*子类可以定义与父类同名的静态方法,以便在子类中隐藏父类的静态方法*父类的私有方法不能被子类覆盖*不能抛出比父类方法更多的异常*构造方法不能被重写6方法重写(Overriding)vs方法重载(Overloading)7Object类*是一切类的父类*常被重写的方法equals()equals()方法没有被重写之前,和==作用是一样的instanceof的使用instanceof用于判断一个引用类型所引用的对象是否是一个类的实例四、多态1定义:同一个引用类型,不同的实例,执行不同的操作(JVM的动态绑定机制)2前提:*要有继承关系;*要有方法重写.(实现多态的基础)*要有父类引用指向子类对象.3向上转型*父类引用指向子类对象.*向上转型的语法父类引用变量名=new子类;【注】此时通过父类引用变量无法调用子类特有的方法.(如果需要,则向下转型)4向下转型*将一个指向子类对象的父类引用赋给一个子类的引用.*向下转向的语法子类型引用变量名=(子类型)父类型的引用变量;【注】在向下转型的过程中,如果没有转换为真实子类类型,则会出现类型转换异常.五、抽象类和抽象方法1抽象类的定义语法abstractclass类名{}2抽象方法的定义语法[访问修饰符]abstract返回值类型方法名([参数列表]);3抽象类与抽象方法的使用*抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类*如果子类没有实现父类的所有抽象方法,子类必须被定义为抽象类*没有抽象构造方法,也没有抽象静态方法*抽象类中可以有非抽象的构造方法,创建子类的实例时可能调用4抽象类VS普通类*抽象类不能被实例化但可以创建一个引用变量,其类型是一个抽象类,指向非抽象的子类实例*普通类可以被实例化5抽象方法VS普通方法*有无方法体六、接口1接口的定义语法publicinterface接口名{//接口成员}2实现接口的语法public类名implements接口名{//实现方法//普通方法}3接口特性*接口不可以被实例化*实现类必须实现接口的所有方法*实现类可以实现多个接口implements、多个接口使用逗号隔开*接口中的变量都是静态常量(publicstaticfinal)4接口使用*接口中的成员变量默认都是publicstaticfinal的,必须显式初始化*接口中的方法默认都是publicabstract的*接口没有构造方法,不能被实例化*一个接口不能实现另一个接口,但可以继承多个其他接口*一个类必须实现接口抽象方法,除非这个类也是抽象类5抽象类vs接口a.相同点*代表系统的抽象层*都不能被实例化*都能包含抽象方法*用于描述系统提供的服务,不必提供具体实现b.不同点*在抽象类中可以为部分方法提供默认实现,而接口中只能包含抽象方法*抽象类便于复用,接口便于代码维护*一个类只能继承一个直接的父类,但可以实现多个接口c.使用原则*接口做系统与外界交互的窗口*接口提供服务*接口本身一旦制定,就不允许随意修改*抽象类可完成部分功能实现,还有部分功能可作为系统的扩展点七、异常1Java中如何进行异常处理2异常对象常用的方法3try-catch第一种情况:正常第二种情况:出现异常异常是一种特殊的对象,类型为java.lang.Exception或其子类第三种情况:异常类型不匹配4try-catch-finally*是否发生异常都执行finally*不执行的唯一情况System.exit(1)*即使try-catch内存在return语句,finally也会直行5多重catch块引发多种类型的异常*排列catch语句的顺序:先子类后父类*发生异常时按顺序逐个匹配*只执行第一个与异常类型匹配的catch语句6throw与throws7异常体系结构8自定义异常*定义异常类,并继承Excepion或者RuntimeException*编写构造方法,继承父类的实现。常见的构造方法有4种形式//构造方法1publicMyException(){super();}//构造方法2publicMyException(Stringmessage){super(message);}//构造方法3publicMyException(Stringmessage,Throwablecause){super(message,cause);}//构造方法4publicMyException(Throwablecause){super(cause);}*实例化自定义异常对象*使用throw抛出补充:面向对象设计原则a.摘取代码中变化的行为,形成接口b.多用组合,少用继承c.针对接口编程,不依赖于具体实现d.针对扩展开放,针对改变关闭
本文标题:Java面向对象-笔记
链接地址:https://www.777doc.com/doc-2881638 .html