类与关键词 多态与异常

全局变量:成员变量
直接写在类中,方法外部,作用范围是整个类,指的大部分都是属性
局部变量:
通常是写在方法内部,只适用于当前的方法或者更小的范围,(变量的作用范围就是离它最近的{}内部)
this   这,这个,一般用来代指成员变量   例如:this.name指的就是这个对象的name属性即属性name
一、 类:
1. 概念: 我们将具有共同特性的事物抽象为类
2. 定义格式:修饰符   class  类名{}
a) 修饰符:public private protected default final  abstract
b) 类名: 符合标识符的命名规则
i. 由字母数字下划线和$符号组成
ii. 不能以数字开头
iii. 不能是java关键字
iv. 符合驼峰命名法
v. 严格区分大小写
vi. 见名识意
3. 类的组成:
a) 属性:
b) 方法
属性
a) 事物的特征,特点(静态特性)
1. 例如:人的名字,人的年龄,人的性别,,,,,,人的眼睛,鼻子,耳朵
2. 基本结构(组成部分):修饰符  数据类型  属性名;
a) 修饰符:public  private  protected default  static  final
b) 数据类型:
i. 基本数据类型(8个)
1. 数值型
a) 整数型(byte 1 short 2  int 4 long 8)
b) 浮点型(float 4 double 8)
2. 字符型(char  2)
3. 布尔型(boolean  1个字节取值只能是true或者false)
ii. 引用数据类型(3个)
1. 数组(array)
2. 接口(interface)
3. 类(class)
 
方法:
1. 方法概念:事物的行为动作(动态特性)
2. 基本结构:修饰符  返回值类型  方法名 (参数列表){方法体}
a) 修饰符:public  private  protected  default  static  final  abstract
b)  返回值类型:void 无返回值的   数据类型
i. 当一个方法需要返回值时,那么在方法体中的最后一行必须添加return  返回值,而返回值类型处的数据类型必须是返回的数据的数据类型


c) 方法名:符合标识符的命名规则
d) 参数列表:是由多个参数和数据类型组成的;格式为:数据类型 参数名,数据类型 参数名………..
3. 方法的分类
a) 无返回值无参数
b) 无返回有参数
c) 有返回值无参数
d) 有返回值有参数
4. 方法的重载(overload)
a) 在同一个类中方法的名称相同,参数的个数,顺序,类型至少有一个不同,我们称为方法的重载;与访问修饰符合返回值类型无关
对象
对象的概念: 类的具体描述
创建对象的格式:类名  对象名 = new  类名(参数);
二、 构造方法
1. 构造方法的作用:初始化类的信息,创建对象,实例化对象
2. 基本结构: 访问权限修饰符   类名(参数列表){}
a) 访问权限修饰符  public  private  protected default
3. 构造方法的特点:
a) 能够进行初始化
b) 没有返回值类型
c) 名称必须和类名相同
d) 构造方法也是可以重载的
e) 在一个类中若没有定义构造函数,那么系统会默认生成一个无参构造,若一旦在类中定义了构造函数,那么系统将不会再提供默认的无参构造
三、 封装
1. 封装的目的:增加代码(属性)的安全性
2. 封装的步骤:
a) 私有化属性
b) 生成公共的get&set方法
c) 生成有参无参构造
四、 继承(extends
1. 继承是发生在父子类关系中
2. 关键字:extends
3. 结构:修饰符  class 类名  extends  父类{}
4. 特点:
a) 发生在父子类关系中
b) 类是单继承的(一个类只能继承一个父类)
c) 一个父类可以被多个子类继承
d) 一个类继承了父类,那么将拥有父类的所有属性和方法
e) 在创建子类对象时,默认会先调用父类的无参构造函数
5. 重写,覆盖(override)
a) 重写发生在父子类关系中
b) 父类无法满足子类需求时,那么我们需要重写父类的非私有非静态同名方法
c) 要求:方法名称相同,参数相同,返回值类型相同,子类的访问权限不能小于父类,且子类不能抛出比父类更多的异常,但可以是父类异常的子异常

 

 

一、 Object

Object是所有类的父类,类在默认情况下,继承的都是Object类

当我们直接输出一个对象名的时候:会出现:当前类的路径+@+hashcode、

1. toString()   将对象转化成String类型,在使用对象时,默认会调用toString()方法

a) toString得到的字符默认格式为:当前类的路径+@+hashcode

b) 若想要呢自己规定格式,那么我们需要重写toString();

c) 

2. equals()

a) ==比较基本数据类型时比较的是值是否相等,比较引用数据类型时比较的是内存地址是否相等

b) equals()比较的是引用数据类型的值是否相等

c) 在object中equals方法只是简单的使用==进行了比较,若我们真的想要比较引用数据类型的值是否相等,那么我们就需要重写equals方法

3. finalize ()  垃圾回收机制  只是用来进行垃圾回收

二、 访问权限修饰符

  

权限修饰符

在本类中

在同包

不同包继承关系

任何位置

私有的private

×

×

×

默认(default)

×

×

受保护的protected

×

公共的public

访问权限从小到大的顺序为:private  default   protected  public

三、 this

this ,这  这个在代码中一般指的是当前对象,主要用来区分成员变量和局部变量

当变量名相同时,加this关键字的指的是全局变量,不加this关键字的是局部变量

this的用法:

调用当前类的属性:this.属性名;

调用当前类的方法:this.方法名();。。。。。此处的this是可以省略的

调用当前类的构造方法:this();…..当调用有参构造时,需要在()中添加参数

四、 super

super指的是父级的,一般用来调用父类中的特性

super的用法:

调用父类中的属性:super.属性名;

调用父类中的方法:super.方法名();

调用父类中的构造方法:super();……当调用有参构造时,需要在()中添加参数。。。。。。。。。必须写在子类构造函数的第一行

五、 final 最终的

1. final修饰的类不能被继承

2. final修饰的属性,值不能改变,是常量,必须赋初始值

3. final修饰的方法,不能被重写

4. 不能修饰构造方法

六、 static  静态

能修饰属性,也能修饰方法

使用static修饰的方法和属性,不属于对象,只属于类

 

调用静态属性:类名.属性名;

调用静态方法:类名.方法名();

七、abstract  抽象的

 

abstract  可以修饰方法

修饰的方法我们称为抽象方法;

修饰的方法没有方法体;

抽象方法只能存在于抽象类中

abstract 修饰类的抽象类

a) 当一个类继承了抽象类,那么这个类就必须重写抽象类中的所有抽象方法

b) 抽象类中可以有抽象方法,也可以有普通方法

c) 抽象类不能被实例化(不能创建对象)

 

 

 

八、接口interface

a) 定义的格式:

public   interface  接口名{}

b) 接口是特殊的抽象类

c) 接口中所有的方法都是抽象方法,接口中所有的方法都是默认使用public  abstract修饰的

d) 接口中所有属性(变量)都是默认使用public static final修饰的,必须给定初始值

e) 接口也不能被实例化

f) 类与接口之间只能是实现的关系,即类实现接口

g) 类实现了该接口,那么就必须重写接口中的所有方法

h) 类是多实现的,即一个类可以实现多个接口,接口之间使用,分割

i 类是单继承,多实现的(一个类只能继承一个父类,但是可以实现多个接口)


 

多态:(多种状态)

1. 重载

在同一个类中,要求方法的名称相同,参数的个数,顺序,类型至少有一个不同

2. 重写,

在父子类继承关系中,父类无法满足子类的需求时,那么我们需要重写该方法,要求;方法的名称相同,参数相同(个数,顺序,类型),返回值相同;子类的访问权限不能小于父类;子类不能抛出比父类更多的异常,但可以是父类异常的子异常

3. 实现类创建接口对象

a) 接口的特点:

i. 特殊的抽象类

ii. 所有的方法都是抽象的,公共的,默认的是public abstract

iii. 属性默认是public static  final修饰的,必须赋初始值

iv. 接口与类之间的关系是类实现接口

v. 一个类实现了该接口,那么必须重写该接口中的所有方法

vi. 一个类可以实现多个接口,但只能继承一个类

vii. 接口不能实例化

格式: 接口  对象名 = new  实现类();   在这个对象中可以使用的方法只能是接口中含有的方法,

 

 

4. 创建类的子类得到父类对象

a) 抽象类的特点:抽象类的特点,当一个类继承抽象类,那么这个类需要重写抽象类中的所有抽象方法,抽象类中可以有普通方法,也可以有抽象方法

b) 抽象方法的特点:抽象方法没有方法体,抽象方法只能存在于抽象类中

 

格式:父类  对象 = new  子类();   可以通过new子类来使用父类中的方法    在这个对象中可以使用的方法,都是父类中的方法

 

 

 

异常

 

error 错误。在程序运行过程中出现的无法解决的错误;最常见的是:内存溢出

exception 在程序运行过程中出现的可以解决的问题

 

 

1. 异常的分类:

a) 一般异常(受控异常):

i. 在代码编译过程中,得到可能出现异常的位置,必须解决后才能编译通过

1. IOExceptionIo流异常

2. FileNotFoundException:文件未找到异常

3. EOFException:读写文件尾异常

4. MalformedURLException:URL格式错误异常

5. SocketExceptionSocket异常

6. SQLException   sql异常

7. ParseException  日期格式转换异常

b) 运行时异常:RuntimeException(非受控异常):

i. 程序的运行过程中,可以编译通过,但是由于代码逻辑问题出现的异常,我们称之为运行时异常

1. 常见的运行时异常:

a) ArrayIndexOutOfBoundsException数组下标越界异常

b) IndexOutOfBoundsException 下标越界异常

c) StringIndexOutOfBoundsException  字符串下标越界异常

d) ArithmeticException数学计算异常

e) NullPointerException空指针异常

f) NumberFormatException 数字格式化异常

c) 异常的解决方案:

i. try  catch格式:

try{

可能出现异常的代码块

}catch(异常的类型){

异常的解决方式

}


当我们写多个catch的时候,顺序应该为异常从小到大

finallytry catch的连用语句,表示是否出现异常都会执行finally里面的内容,一般我们用于关闭连接,释放资源

 

ii. throws   抛出,声明异常

1. 一般在方法的()后面声明异常一个,一般情况下,我们会将异常抛出给main方法,注意,在main方法中必须使用try,,catch块解决

 

 

 

 

 


 

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值