本文共 1505 字,大约阅读时间需要 5 分钟。
Java面向对象基础入门
面向对象编程是一种基于对象的编程范式,强调将现实世界中的事务抽象为程序设计中的“对象”。它以“一切皆为对象”为核心思想,采用“自下而上”的设计方式,即先设计组件,再进行组件拼装。
类的基础
- 类:定义一个对象的基本模板,用于创建对象。类似于蓝图,决定了对象的属性和行为。
- 引用数据类型:类似于自定义的数据类型,可以看作是对象的引用。每个对象都有独立的引用地址。
对象的成员
- 成员:属于对象的属性,随对象而消亡。每个对象都可以有不同的成员属性。
- 局部变量:存在于代码块中,与对象无关。成员变量在对象消亡时也随之消失。
this关键字
- this:指向当前对象的成员变量,用于区分局部变量和成员变量。在成员方法中,隐含this传参。
- 注意事项:static方法没有隐含的this传参,若要访问成员变量需通过对象创建。
构造方法
- 构造方法:方法名必须与类名一致,new操作自动调用。无法用普通方法调用,返回值类型可以是任何类型。
- 构造方法重载:允许在不同参数类型下定义多个构造方法。
- 构造方法的赋值:构造器的赋值操作是最可靠的,值会在最后执行。
static修饰符
- 静态属性:属于类而非对象,所有对象共享。静态成员在类加载时创建,仅有一份。
- 静态变量:存放在方法区中,属于全体对象。成员变量存放在堆内存中。
- 访问方式:通过类名.的形式访问,不建议通过对象名。
- 注意事项:不存在静态的局部变量。
匿名对象
- 匿名对象:没有引用指向,直接用new创建。常用于方法参数和返回值。
- 使用场景:一次性使用后会被回收,无法再次访问。
代码块
- 局部代码块:用于优化内存管理,限制局部变量的生命周期。
- 构造代码块:定义在类成员位置,随构造器执行。赋值顺序遵循定义顺序。
- 静态代码块:在类加载时执行,不能调用非静态成员。静态代码块和构造代码块的赋值顺序一致。
导包与访问权限
- 导包:使用智能导入,方便开发。import包名.*;可选,需确保不导入无用类。
- 访问权限修饰符:public、protected、default、private。默认权限仅限同包类访问。
多态
- 多态条件:父类引用指向子类对象,且有方法重写。
- 成员变量访问:编译时看左边,运行时看左边。
- 成员方法访问:编译时看左边,运行时看右边。
- 向上转型:子类引用转父类引用,不出问题。
- 向下转型:需确认子类类型。使用instanceof判断。
抽象类
- 抽象类:可以定义抽象方法,必须被子类重写。抽象方法没有方法体。
- 抽象类特点:不能创建对象,但可以有构造器。子类继承抽象类不需重写所有方法。
- 成员变量和方法:抽象类可以有普通成员和静态成员。
接口
- 接口:访问权限只有public和默认。可以多继承,抽象类继承接口可不重写。
- 接口成员:方法默认public abstract,成员变量默认全局常量,需显式赋值。
- 静态方法和默认方法:接口中可以有。接口和接口之间可以多继承。
内部类
- 成员内部类:可以访问外围类成员,直接使用外围类对象和类名。
- 外围类访问内部类:需创建内部类对象。静态方法需创建外围类对象。
- 局部内部类:定义在方法或作用域中,无法访问外部类成员。
lambda表达式
- lambda表达式:特殊的匿名内部类,用于实现接口。语法简洁,灵活性高。
- 使用场景:方法传递或返回函数。形参列表可简化,方法体可省略。
- 方法引用:格式为接口名::方法名。适用于函数组合和高阶函数。
通过以上知识,可以更好地理解Java面向对象编程的核心概念。面向对象不仅仅是对象的操作,更是如何通过类和继承实现代码复用和抽象。掌握这些概念,有助于写出更高效、可维护的代码。
转载地址:http://yfbfk.baihongyu.com/