面向对象基础知识点梳理
类与对象的关系
对象是类的具体实现,类是对象的抽象。
在一个程序中,类是独一无二的,相同的类只有一个。对象是基于类创建的,类的具体化,没有数量限制。
类是定义的抽象的存储数据的规则、处理数据的方式。
对象是具体实现数据存储和数据处理的实例。
创建一个类和类的使用
class Foo {
private int name;
public int getName() {
return name;
}
public void setName(int name) {
this.name = name;
}
public void m(int a, int b) {
System.out.println(a + b);
}
}
Foo f = new Foo();
System.out.println(f);
抽象方法、抽象类
被abstract修饰的类和方法被称作抽象类、抽象方法。
抽象方法是一个没有方法体的方法,只提供了方法签名、返回类型等规则,明确了如何去调用以及返回结果的形式。
一个类中如果出现了抽象方法,这个类必须被定义为抽象类,定义为抽象类的类不能被实例化,因为可能包含无法执行的抽象方法。
abstract class Goo{
public abstract void absMethod();
}
接口
一种可以用来定义数据类型的概念,但是他本身不能直接实例化,因为只有抽象方法,没有具体的方法实现。提供规范标准,也称为边界类,虽然不是类。
interface Hoo {
void show();
}
接口与抽象类的对比
他们是不同的类型。抽象类是类的一种,而接口是区别于类的。
定义语法不同,接口是interface,抽象类是abstract class。
定义内容不一样,接口只包含公有静态常量和抽象方法,抽象类可以包含正常类的所有内容,额外的可以定义抽象方法。
接口是多继承,抽象类遵从类的规则是单继承。
一个具体实现类,只能继承一个抽象类,可以实现多个接口。
Static、this、super使用
Static:静态的意思,修饰的内容直接和类相关,类可以被访问的地方,只要权限足够就可以访问static修饰的方法和属性,可以修饰方法、属性、代码块。
This:指的当前对象。正在执行的代码,如果能找到执行的对象,this就是指的这个对象,可以调用方法、属性。
Super:指父类的内容,是具体的对象,有了this才有super。继承的情况下如果子类和父类有相同的属性或者方法,可以显式调用父类定义的内容。
异常的体系结构
异常的最大类Throwable:Error(开发者无法解决的严重错误)、Exception(可以通过一些处理让程序继续运行,而不终止)。
Error:内存溢出(各种内存区域的溢出)。
Exception:运行时异常(运行才知道是不是有异常)、检查型异常(编译前就得提前处理的异常)。
运行时异常:空指针、数组下标越界、类型转换异常、算数异常
检查型异常:io异常。
异常处理5个关键字的使用
try {
//可能发生异常的代码
} catch (Exception e) {
//出现异常后处理异常的代码
} finally {
//无论是否出现异常都执行的代码
}
throw new Exception();
public static void main(String[] args) throws Exception {
}
final、finally、finalize的区别
final:修饰符,修饰的变量是常量不能改变值;修饰的方法时最终法法,不能被重写;修饰的类是最终类,不能被继承。修饰的内容就是只读的。
finally:异常处理的关键字之一,所在代码块是任何时候都会被执行的,一般用于关闭资源。
finalize:是object类的一个方法名,析构函数,数据对象被销毁时调用的方法。
局部变量、成员变量
定义的位置不一样、作用域不一样、生命周期不一样,初始值不一样,存储位置不一样。
局部变量定义在方法内,作用域是所在代码块,没有初始值,必须先赋值才能使用,是在内容栈中存储的数据,所以生命周期比较短。
成员变量定义在类中,作用域是类的所有范围,不赋值的花也有默认值,可以直接使用,和对象相关,一起存储在堆内,生命周期和对象一样。
重载
发生在一个类中,方法名相同、参数列表不同的方法称之为方法重载,其他所有条件无限制。在java中重载的方法是完全没有关系的多个方法。
public void m(int a, int b) {
System.out.println(a + b);
}
private int m() {
return 0;
}
重写
发生在父类与子类中。子类对父类相同的方法进行不同的定义。java中判断相同方法的标准是方法签名。
要求满足里氏替换原则:
方法签名相同(方法名、参数列表);
访问权限修饰符的权限,子类必须必父类不小;
返回类型,子类的返回类型可以被父类的返回类型直接接收;
抛出的异常,子类不能比父类范围大。
abstract class Goo{
public abstract void absMethod();
}
class Ioo extends Goo {
@Override
public void absMethod() {
}
}
作者:喵星兔
出处:https://www.cnblogs.com/kittybunny/
喵星之旅:https://www.cnblogs.com/kittybunny/p/12148641.html
我的视频:https://space.bilibili.com/518581788
更多内容:不咬人的小兔子
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
我是兔子,我会喵,我叫喵星兔~~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律