JavaOOP
2019-02-20 13:41:37 1 举报
AI智能生成
Java 面向对象 OOP 知识点 思维导图
作者其他创作
大纲/内容
1、类和对象
什么是类
类是从一组对象中抽象出来的,类是模版,是抽象的概念;定义了对象将会拥有的特征(属性)和行为(方法)
什么是对象
对象是用来描述客观事物的一个实体
关系
类是对象的抽象(类型),对象是类的实例
使用
定义类:使用class关键字
创建类的对象:使用new关键字,调用构造方法
引用对象的属性:对象名.属性;引用对象的方法:对象名.方法名()
2、类的无参、带参方法
语法
[访问修饰符] 返回值类型 方法名(参数列表){
方法体
}
方法体
}
访问修饰符(可见性)
本类 同包 子类 其他
public Y Y Y Y
protected Y Y Y Y
默认 Y Y
private Y
注:Y代表可见
public Y Y Y Y
protected Y Y Y Y
默认 Y Y
private Y
注:Y代表可见
返回值类型
无返回,使用void;有返回值,可以是基本数据类型,引用数据类型,必须有return
返回值类型
无返回,使用void;有返回值,可以是基本数据类型,引用数据类型,必须有return
参数列表
语法:数据类型 变量名。多个参数使用“,”分隔;
方法定义时的参数列表称为形参;调用方法时,传入的参数称为实参。正确调用方法,参数的类型、个数、顺序需一致
无返回值(void),无参
void eat(){
//方法体
}
//方法体
}
无返回值,有参
void eat(String str){
//方法体
}
//方法体
}
有返回值,有参
String eat(String str){
//方法体
return “”;
}
//方法体
return “”;
}
方法执行需要“外部“传入数据,则定义参数列表;方法执行需要有反馈,则定义返回值类型,必须有return,且return的是返回值类型的值。
方法调用
同类,直接写方法名,或this.方法名
不同类,必须先新建对象,在通过对象名.方法名的方式
成员变量
定义在类中,方法外,在整个类中可用,不赋初始值时,系统默认赋相应类型的初始值
局部变量
定义在方法中,在方法中有效,必须赋值才能使用,系统不赋初始值。
成员变量和局部变量同名时,使用局部变量
方法重载
同一个类中,方法名相同,参数列表不同(参数的类型、个数、顺序),与访问修饰符和返回值类型无关
3、对象和封装
构造器
语法:访问修饰符 方法名(参数列表){
方法体
}
方法体
}
方法名需与类名相同
无返回值类型
作用:初始化对象
系统默认添加无参构造;自己添加后,系统不提供无参构造。
static
修饰成员变量,静态变量
增加一种调用方式,可通过,类名.变量名。不允许修饰局部变量
被所有的对象所共享,在内存中只有一个副本,当且仅当在类初次加载时会被初始化,属于类
修饰成员方法,静态方法
类名.方法名
静态方法中不能访问非静态成员变量和方法,因为他们依赖于对象;反之,可以。
修饰代码块,静态代码块
类初次被加载时,按static块的顺序来执行,只执行一次
static{
}
}
误区
1.static关键字会改变类中成员的访问权限吗? 不会
2.能通过this访问静态成员变量吗? 可以
封装
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作盒访问
好处:
隐藏类的实现细节
只能通过规定方法访问数据
提高复用性
代码逻辑更安全
三步走
修改属性的可见性,private
创建公有的getter/setter方法
在需要的地方,加入控制语句
this
指当前对象本身
调用属性
调用方法
调用构造方法
this(),需在构造方法中的第一句
4、继承
父类的由来:其实是由多个类不断向上抽取共性内容而来的。
只支持单继承
subClass extends supClass
super
代表父类对象;只能出现在子类的方法和构造方法中;
调用父类属性,super.name
调用父类方法,super.print();
调用父类构造方法,super()
子类构造中,需第一句
不能被继承的父类成员
private成员
子类与父类不在同包,使用默认访问权限的成员
构造方法
何时使用继承
符合is-a关系的设计,藏獒是一种狗
方法重写
子类中,方法名相同,参数列表相同,返回值类型相同或是其子类,访问修饰符不能比父类严格
Object类
所有类的父类
toString()返回当前对象本身的有关信息,按字符串对象返回
equals()比较两个对象是否是同一个对象,是则返回true
hashCode()返回该对象的哈希代码值
getClass()获取当前对象所属的类信息,返回class对象
abstract
抽象类
不能实例化
抽象方法
没有方法体
必须在抽象类里
抽象方法必须在子类中被实现,除非子类是抽象类
final
修饰的类,不能再被继承
修饰的方法,不能被子类重写
修饰的变量变成常量,只能在初始化时进行赋值
5、多态
定义:同一个引用类型,使用不同的实例而执行不同操作。(同一种操作,优于条件不同,产生的结果也不同)
三要素
具有继承关系(继承是多态的基础)
子类重写父类方法
使用父类的引用指向子类的对象
Pet pet = new Dog();
实现的两种方式
使用父类作为方法形参实现多态
使用父类作为方法返回值实现多态
instanceof
对象 instanceof 类或接口
通常和强制类型转换结合使用
好处
提高了程序的扩展性
弊端
只能使用父类的引用访问父类中的成员
6、接口interface
成员修饰符
成员常量
public static final
成员函数
public abstract
特点
是对外暴露的规则
是程序的功能扩展
可以用来多实现
类和接口之间是实现(implements)关系,类可以实现多个接口
接口和接口之间可以有继承关系
新特性
1.8中,允许有静态方法
public interface NewInterface {
static void staticMethod() {
System.out.println("staticMethod");
}
default void defaultMethod() {
System.out.println("defaultMethod");
}
}
static void staticMethod() {
System.out.println("staticMethod");
}
default void defaultMethod() {
System.out.println("defaultMethod");
}
}
允许有default方法
调用
静态方法:接口名.方法名
default方法:
需实例化实现类,再调用方法;
7、异常
定义:在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序
关键字
try
执行中可能产生异常的代码
catch
捕获异常,可多个
finally
无论是否发生异常,代码总能执行
注:不执行的唯一情况,catch块中,System.exit(1);中断程序,退出java虚拟机
通常用来做资源释放操作:关闭文件,关闭数据库连接等
throw
手动显式的抛出一个异常。throw语句的后面必须是一个异常对象。
throws
声明方法可能要抛出的各种异常
将函数中可能出现的异常向调用者声明,而自己则不具体处理。
Object
Throwable
Error
Error类以及他的子类的实例,代表了JVM本身的错误
VirtulMachineError
StackOverFlowError
OutOfMemoryError
AWTError
Exception
RuntimeException
ArithmeticException
MissingResourceException
ClassNotFoundException
NullPointerException
ArrayIndexOutOfBoundsException
IllegalArgumentException
UnKnowTypeException
IOException
EOFException
FileNotFoundException
分类
非检查异常(unckecked exception):Error 和 RuntimeException 以及他们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常
检查异常(checked exception):除了Error 和 RuntimeException的其它异常。javac强制要求程序员为这样的异常做预备处理工作(使用try…catch…finally或者throws)
异常处理的9个最佳实践
1、在 Finally 中清理资源或使用 Try-With-Resource 语句
2、抛出更具体的异常
3、为你的异常编写文档
4、将描述信息与异常一同抛出
5、优先捕获具体的异常
6、不要捕获 Throwable
7、不要忽略异常
8、不要同时打印并抛出异常
9、包装异常但不要丢弃原始异常
http://www.importnew.com/29603.html
收藏
0 条评论
下一页