第五节:java面向对象
三个特征:封装,继承,多态。
开发:找对象,没有对象就创建对象,使用对象,维护对象。
成员变量:
类:对现实生活中事物的描述
对象:实实在在存在的个体。
对象就是在堆内存中用new建立的实体,实体就是用来存储多个数据的,对象有很多个实体,比如年龄,性别,姓名等。凡是用来存储多个数据的我们都叫做实体。
定义类就是在描述事物,就是在定义属性和行为。属性和行为共同成为类中的成员(成员变量和成员方法)
成员变量:作用于整个类中,在堆内存中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | class Car { //描述颜色 String color = "红色" ; //描述轮胎数 int num = 4 ; //运行行为 void run() { System.out.println(color+ ".." +num); } } class CarDemo { public static void main(String[] args) { //生产汽车。在java中通过new操作符来完成。 //其实就是在堆内存产生一个实体 Car c = new Car(); //c就是类类型变量,类类型变量指向对象 //需求:将车的颜色改成蓝色 c.color = "blue" ; //车开始运行 c.run(); } } |
匿名对象:两种使用情况:当对对象方法仅进行一次调用时;匿名对象可以作为实际参数进行传递
封装:
人应该有年龄,就需要在Person类中提供对应访问age的方式。之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句。对访问的数据进行操作,提高代码健壮性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | class Person { private int age; public void setAge( int a) { if (a> 0 && a< 130 ) { age = a; speak(); } else System.out.println( "feifa age" ); } public int getAge() { return age; } void speak() { System.out.println{ "age=" +age}; } } class PersonDemo { public static void main(String[] args) { Person p = new Person(); //p.age = -20; p.setAge(- 40 ); //p.speak(); } } |
构造函数:
- 函数名与类名相同
- 不用定义返回值类型,和void不同的是void是返回值类型不确定。而构造函数根本不需要定义返回值类型。
- 不可以写return语句
对象一建立就会调用构造函数。构造函数的作用:可以用于给对象进行初始化。
为什么需要初始化:现实中的事物只要一出现就具备基本的特性。
当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数 Person(){} 。
每个对象都有自己不一样的地方,支持重载(构造函数的名称一样参数不同。)。
一个对象建立,构造函数只运行一次。而一般方法可以被该对象调用多次。
构造代码块:
没有函数名更没有返回值类型
this关键字
一般函数不能直接调用构造函数,this语句不能用在一般函数中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2018-05-10 Kipmi0 占用CPU 100%
2018-05-10 CentOS系统日志