面对对象小结

包和访问修饰符

对于包名的命名,可以理解为将其与电脑中的文件夹相联系,目的是为了针对资源作详细的划分;

访问修饰符在不同情况下的访问权限

访问修饰符本类同包子类不同包+非子类
public
protect×
默认××
private×××

注意点:
1.对于private 和默认修饰符修饰的情况下 ,能够对其进行继承,只是没有访问权限

2.当出现在另一个包中,想要访问时,如果出现访问不到的情况时,需要使用 import来导入相关需要使用的包;

方法重写:

当子类继承的父类方法,无法满足子类需求的时候,重写覆盖父类的方法

相关细节点:
1.方法名与父类一致;
2.参数与父类一致;
3.返回值与父类一致;
4.子类的访问修饰符不能严于父类(子类的修饰符访问权限更大)
5.继承时重写;

重载:
1:方法名相同;
2.参数列表不同;
3.与返回值无关;
4.与访问修饰符无关;
5.同类之中重载;

抽象类和final关键字

抽象方法:方法的实现没有任何价值,干脆就不实现方法体,于是构成抽象方法,抽象方法没有方法体,且拥有抽象方法的类必须为抽象类,且抽象类不能创建对象;

构成:
[访问修饰符] abstract 返回值类型 方法名(参数){
}

-如果子类不去重写父类的抽象方法,那子类也必须定义为抽象类;抽象类可以没有抽象方法,但有抽象方法,该类一定为抽象类;

final关键字

1.修饰符的方法
[访问修饰符] final 返回值 方法名(参数)
final 修饰符修饰的方法 意味着该方法不能被覆盖,即不能被重写;

2.修饰变量
[访问修饰符] final 数据类型 变量名=值
-final修饰的变量,是指该变量即是一个常量;
-常量必须初始化,并且用static 修饰,名称大写更加规范;

eg: public final static

3.修饰类
[访问修饰符] final class 类名{

//成员变量
成员方法
}
final修饰的类不能被继承

多态的定义:

   多态是面向对象编程中的一个重要概念,它允许不同的对象以自己的方式对同一消息作出响应。

简单来说,多态是指同一个方法在不同的对象上有不同的行为。

在Java中,多态是通过继承方法重写来实现的。
当一个子类继承自父类,并重写了父类的方法时,可以通过父类的引用指向子类的对象,并调用重写的方法。
这样,同一个方法可以根据引用的对象的实际类型来决定要执行的代码。

多态的好处是提高了代码的灵活性和可扩展性。通过使用多态,可以编写出更通用、可复用和可维护的代码。
同时,多态也是面向对象编程的核心思想之一,能够更好地体现对象之间的关系和行为的多样

多态对象转型问题

1.子对象转换为父类对象

pet dog = new Dog();

2.父类对象转换为子类对象 [classcastException]

Pet pet = new snake(); if(pet instanceof
Dog){//判断pet对象实际的原型是否为Dog型 Dog dog = (Dog)pet; dog.band; }

接口

接口是一种定义了类或对象与外部世界之间通信的规范。它定义了对象之间的交互方式,包括可以调用的方法、参数和返回值的类型等。
通过接口,不同的类可以实现相同的接口,并提供自己的具体实现。这种设计可以增加代码的灵活性和可扩展性,同时也方便了代码的复用。

在java中,继承只能实现单继承,如果同时实现继承父类,再继承其他元素基因。此时也意味着java的继承是无法实现的
此时可以使用java提供的接口技术,通过接口的多实现,间接实现java的多继承。
eg
son 继承 father and monther

定义接口

[访问修饰符] Interface 接口名称{ // 成员方法

成员变量 }

2.实现接口

public class 子类 implement 接口名{

//重写接口中的方法

}

注意细节:
1.接口的方法 必须是公共的 且必须是抽象的,或者是 public static的静态方法(类调用)且只能在jdk1.8版本以上;
2.接口没有构造方法,所以不能实例化对象;
3.接口的成员变量 必须是public static的 final(常量)必须赋值;
4.接口中的方法 ,子类必须重写;
5.接口可以多实现。(一个子类能有多个接口)

类与类的关系:

1.继承关系

2.拥有关系(内部类)

1.内部类的创建对象
A.B b = new A().new B();

2.静态内部类
static修饰的内部类,直接进行类调用
A.B b=new A.B();

3.匿名内部类 (存活周期短)
接口名称(抽象类) 对象名 = new 接口名(){
重写方法
}

代码块执行问题

代码块的执行时机:在对象被创建前执行
作用:对象创建前的加载或者初始化工作;

静态代码块(static修饰)

执行时机是在 类加载前
作用: 对类在加载时做一些初始化工作,只执行一次

异常结构和异常处理

异常(Exception):依靠程序本身可以解决的非严重性问题;

对此有两类异常

   1--> 运行时异常(RuntimeException)

常见的运行时异常包括但不限于以下几种:

  1. 空指针异常(NullPointerException):当试图在一个空对象上调用方法或访问其属性时,会抛出空指针异常。

  2. 数组越界异常(ArrayIndexOutOfBoundsException):当试图访问数组中不存在的索引位置时,会抛出数组越界异常。

  3. 类型转换异常(ClassCastException):当试图将一个对象强制转换为不兼容的类型时,会抛出类型转换异常。

  4. 数字格式异常(NumberFormatException):当试图将一个无法解析为数字的字符串转换为数字时,会抛出数字格式异常。

  5. 算术异常(ArithmeticException):当进行除零操作或其他不合法的算术运算时,会抛出算术异常。

  6. 索引越界异常(IndexOutOfBoundsException):当试图访问集合或容器中不存在的索引位置时,会抛出索引越界异常。

  7. 类未找到异常(ClassNotFoundException):当试图加载不存在的类时,会抛出类未找到异常。

  8. 方法未找到异常(NoSuchMethodException):当试图调用不存在的方法时,会抛出方法未找到异常。

这些是常见的运行时异常,但实际上还有许多其他可能的异常情况。在编程中,了解常见的异常类型并适当处理它们是非常重要的,以确保程序的稳定性和可靠性。

2->常见的检查异常包括:

  1. 空指针异常(NullPointerException):当尝试访问一个空对象的成员时,会抛出空指针异常。

  2. 数组越界异常(ArrayIndexOutOfBoundsException):当尝试访问数组中不存在的索引位置时,会抛出数组越界异常。

  3. 类型转换异常(ClassCastException):当试图将一个对象强制转换为不兼容的类型时,会抛出类型转换异常。

  4. 数字格式异常(NumberFormatException):当字符串无法转换为数字时,会抛出数字格式异常。

  5. 文件未找到异常(FileNotFoundException):当尝试打开一个不存在的文件时,会抛出文件未找到异常。

  6. 输入输出异常(IOException):在输入输出操作过程中发生错误时,会抛出输入输出异常。

这只是一些常见的检查异常,实际上还有很多其他类型的异常。在编写代码时,需要适当处理这些异常,以确保程序的稳定性和健壮性。

异常处理:
try:捕获异常;
catch:处理相对应的异常(catch可以有多个)
finally:无论是否发生,都必定会执行,通常用于释放内存资源

注意
发生对应类型的异常时,jvm需要创建对应类型的异常对象;
异常处理语句中 有return,则先执行finally在执行return

自定义异常

1.自定义异常类,去继承Exception
2.抛出异常对象
throw new 异常();
3.定义方法的异常抛出
[访问修饰符] [其他修饰符]返回值类型 方法名 (参数列表)throws 异常列表
4 处理异常
try…catch…fianlly
的类似结构去处理异常
注意
方法内部抛出异常,要么try catch 处理,要么使用 throws 将异常继续抛出给其他调用方法者处理;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值