面向对象
2019-09-28 16:54:34 0 举报
AI智能生成
面向对象思维导图
作者其他创作
大纲/内容
面向对象三大特性
一、封装
目的:隐藏一个类中不需要对外提供的实现细节
修饰符
Java权限修饰符public、protected、private置于类的成员定义前,用来限定对象对该类成员的访问权限
对于class的权限修饰只可以用public和default(缺省)
二、继承
Java只支持单继承,不允许多重继承 :一个子类只能有一个父类
一个父类可以派生出多个子类
一个父类可以派生出多个子类
重写
注意:重写方法不能使用比被重写方法更严格的访问权限
注意:子类方法抛出的异常不能大于父类被重写方法的异常
注意:重写和被重写的方法须同时为static的,或同时为非static的
三、多态
体现
1、方法的重载(overload)和重写(overwrite)
对象的多态性 ——可以直接应用在抽象类和接口上
来源
Java引用变量有两个类型:编译时类型和运行时类型。
编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。
若编译时类型和运行时类型不一致,就出现多态
instanceof 操作符
x instanceof A:检验x是否为类A的对象,返回值为boolean型。
前提
1、需要存在继承或者实现关系
2、要有重写操作
类及类的成员
java语言的基本元素:类和对象
概述:完成需求首先得找具有此功能的对象,若没有就得创建,类就相当于图纸,对象是实例。
使用new +构造器创建一个新的对象
对象类型转换
从子类到父类的类型转换可以自动进行
从父类到子类的类型转换必须通过强制类型转换实现
先使用instanceof操作符测试一个对象的类型
无继承关系的引用类型间的转换是非法的
类的成员
一、属性
语法格式:修饰符 类型 属性名 =初值;
修饰符private:该属性只能由该类的方法访问
二、方法
修饰符 返回值类型 方法名 ( 参数列表) {
方法体语句;
}
方法体语句;
}
重载
概念:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
特点: 与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型)。
三、构造器
修饰符 类名 (参数列表) {
初始化语句;
}
初始化语句;
}
注意:父类的构造器不可被子类继承
四、代码块
作用:对Java对象进行初始化
非静态代码块:没有static修饰的代码块
可以调用静态的变量或方法。
每次创建对象的时候,都会执行一次。且先于构造器执行
静态代码块:用static 修饰的代码块
不可以调用非静态的属
性和方法。
性和方法。
静态代码块只执行一次
五、内部类
在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类
Inner class可以使用外部类的私有数据,因为它是外部类的成员,同一个类的成员之间可相互访问。而外部类要访问内部类中的成员需要:内部类.成员或者内部类对象.成员
内部类特性
Inner class作为类的成员:
可以声明为final的
和外部类不同,Inner class可声明为private或protected
Inner class 可以声明为static的,但此时就不能再使用外层类的非static的成员变量;
Inner class作为类:
可以声明为abstract类 ,因此可以被其它的内部类继承
类之间的关系
关联关系
继承关系
聚集关系
组合关系
类的语法格式
修饰符 class 类名{ 属性;方法; }
Object 类:根父类
equals方法与==操作符区别
==操作符
基本类型比较值:只要两个变量的值相等,即为true
引用类型比较引用:只有指向同一个对象时,==才返回true
equals方法
只能比较引用类型,其作用与“==”相同,比较是否指向同一个对象
特例:当用equals()方法进行比较时,对类File、String、Date及包装类来说,是比较类型及内容而不考虑引用的是否是同一个对象
原因:在这些类中重写了Object类的equals()方法。
包装类
字符串转换成基本数据类型 :通过包装类的构造器实现: int i = new Integer(“12”);
基本数据类型转换成字符串
调用字符串重载的valueOf()方法:
String fstr = String.valueOf(2.34f);
String fstr = String.valueOf(2.34f);
更直接的方式:
String intStr = 5 + “”
String intStr = 5 + “”
抽象类(abstract class)
用abstract关键字来修饰一个类时,这个类叫做抽象类
含有抽象方法的类必须被声明为抽象类
用abstract来修饰一个方法时,该方法叫做抽象方法
只有方法的声明,没有方法的实现。以分号结束:abstract int abstractMethod( int a );
抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体。若没有重写全部的抽象方法,仍为抽象类
不能用abstract修饰属性、私有方法、构造器、静态方法、final的方法
接 口
有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。
从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
一个类可以实现多个接口,接口也可以继承其它接口
接口的特点:
接口中的所有成员变量都默认是由public static final修饰的
接口中的所有方法都默认是由public abstract修饰的
接口没有构造器
接口采用多继承机制
用途:被实现类实现
接口与实现类之间存在多态性
用法总结:
通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。
通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩张功能
接口主要用来定义规范。解除耦合关系
关键字
this
它在方法内部使用,即这个方法所属对象的引用
它在构造器内部使用,表示该构造器正在初始化的对象
注意:使用this()必须放在构造器的首行!
this表示当前对象,可以调用类的属性、方法和构
造器
造器
package
import
super
super可用于访问父类中定义的属性 ,调用父类方法,在子类构造器调用父类构造器
super和this的用法相像,this代表本类对象的引用,super代表父类的内存空间的标识
static
可用static修饰属性、方法、代码块、内部类
特点:
随着类的加载而加载
优先于对象存在
修饰的成员,被所有对象所共享
访问权限允许时,可不创建对象,直接被类调用
final
final标记的类不能被继承
final标记的方法不能被子类重写
final标记的变量(成员变量或局部变量)即称为常量。名称大写,且只能被赋值一次。
0 条评论
下一页