java 面向对象oop
2018-06-29 10:38:57 24 举报
AI智能生成
java oop面向对象思维导图 ,java oop面向对象思维导图
作者其他创作
大纲/内容
1.类和对象
使用对象的步骤
School center = new School();
引用对象成员:使用“.”进行以下操作
引用类的属性:对象名.属性
引用类的方法:对象名.方法名()
什么是类
类是抽象的概念,类是模板,是从对象当中抽象出来的
什么是对象
名词,静态特征==>属性
系统会给属性赋默认初始值
动词 ,能力,行为,动态特征==>方法
对象的属性和方法通常被封装在一起,写在类文件当中
万物皆对象
2.类的方法
方法的定义
// 访问修饰符 返回值类型 方法名
public void run(){
//方法体
}
无参数,有返回值
// 访问修饰符 返回值类型 方法名
public String rockBall(){
return "";
}
注意点: 如果方法有返回值类型,那么方法中必须要有return return返回的数据要和返回值类型一样
有参数,无返回值
// 访问修饰符 返回值类型 方法名 参数类表
public void setName(String name) {
this.name = name;
}
注意点 ,方法参数类型,实参和形参的数据类型必须一致
有参数,有返回值
// 访问修饰符 返回值类型 方法 参数类表
public int sum(int num1,int num2){
//方法体
int sum =num1+num2;
return sum;
}
方法调用
同一个类里,this.调用.
不同类当中,创建对象用对象. 调用.
成员变量
属性,写在类当中的,作用域,整个类当中都可以使用,系统提供默认值
局部变量
方法中申明的变量就是局部变量 必须要先赋值在使用,作用域是方法{}中
方法重载
同一个类当中,方法名相同,参数列表不同(个数,类型,顺序) 和访问修饰符返回值类型无关
public void sum(){
}
public void sum(int num1,int num2){
}
3.对象和封装
封装
1,属性私有化
2,提供get set方法
2,提供get set方法
static
static修饰属性 ,静态变量,类变量,可以通过类名.直接点.所有对象共享属性
static 修饰方法 静态方法 ,类方法 ,可以通过类名.直接调用
this()
调用当前类的构造
this
当前对象的引用
构造方法 特点 ,作用
没有返回值类型
方法名和类名相同
作用:创建对象,在构造当中可以给属性赋值
系统默认调用无参构造
自己手动写了构造方法后,系统不再提供默认无参构造方法
4.继承
继承关键字 extends
继承的好处
将重复代码
抽取到父类中 代码复用
使用继承注意点
子类与父类是is-a关系 狗是宠物吗?
super
父类对象的引用
super()
调用父类的构造方法
访问修饰符
访问修饰符 本类 同包 子类 其他
private √
默认 √ √
protected √ √ √
public √ √ √ √
类初始化顺序
父类属性==>父类构造==>子类属性==>子类构造
如果子类的构造方法中没有通过super显式调用父类的有参构造方法,也没有通过this显式调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。在这种情况下,写不写“super();”语句,效果是一样的。
如果子类的构造方法中通过super显式调用父类的有参构造方法,那将执行父类相应构造方法,而不执行父类无参构造方法。
如果子类的构造方法中通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则。
特别注意的是,如果存在多级继承关系,在创建一个子类对象时,以上规则会多次向更高一级父类应用,一直到执行顶级父类Object类的无参构造方法为止。
方法重写
方法重写的规则
必须要有继承
方法名相同
参数列表相同
返回值类型相同或者是其子类
访问权限不能严于父类
Object类是所有类的父类 java是单根继承,只允许有一个父类
Object类被子类经常重写的方法
toString();返回当前对象本身的有关信息,按字符串对象返回
equals();比较两个对象是否是同一个对象,是则返回true
hashCode();返回该对象的哈希代码值
getClass();获取当前对象所属的类信息,返回Class对象
abstract
修饰方法 抽象方法
没方法体
抽象方法,必须存在于抽象类当中
抽象方法必须被子类重写,除非子类也是抽象类
修饰类,抽象类
不能被实例化
5.多态
里氏替换原则 :任何出现父类的地方,都可以用子类去替代它
instanceof
对象 instanceof 类或接口
如何实现多态
1.需要有继承关系
2.子类必须重写父类的方法
3.父类的引用指向子类的对象
程序中的多态
父类引用指向子类对象 Pet pet = new Dog();
生活中的多态 同一种操作,由于条件不同,产生的结果也不同
6.接口
接口的关键字 interface
为什么要使用接口 ,首先 ,接口可以继承接口,一类可以实现多个接口,体现java的多继承
接口的特点:
属性,公共的静态的final 常量
方法,公共的抽象的方法,不写,默认也是公共的抽象方法.
接口的实现 implements 称为实现类
接口是一种能力 体现在接口的方法上
7.异常
使用log4j记录日志
1.在项目中加入log4j的JAR文件
选择项目 右键 属性
选中Java Bulid Path
选择 第三个选项卡
Libraries
add JARS
选中项目中的jar包
第二步 添加配置文件 文件后缀 log4j.properties
### 设置Logger输出级别和输出目的地 ###
log4j.rootLogger=ERROR, stdout,logfile
### 把日志信息输出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
### 把日志信息输出到文件:jbit.log ###
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=D\:\\jbit.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%l %F %p %m%n
异常的分类
java.lang.Object
java.lang.Throwable
java.lang.Exception
运行时异常,不要求
程序必须做出处理
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
Exception 检查时异常
常见的异常类型
Exception 异常层次结构的父类
ArithmeticException 算术错误情形,如以零作除数
ArrayIndexOutOfBoundsException 数组下标越界
NullPointerException 尝试访问 null 对象成员
ClassNotFoundException 不能加载所需的类
IllegalArgumentException 方法接收到非法参数
ClassCastException 对象强制类型转换出错
NumberFormatException 数字格式转换异常,如把"abc"转换成数字
Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws
try 执行可能产生
异常的代码
catch 捕获异常
finally 无论是否发生异常,
代码总能执行
throws 声明方法可能要
抛出的各种异常
public void test() throws Exception{
}
throw 手动抛出异常
throw new Exception("找不到对象");
0 条评论
下一页