类和对象详解

一个类生成一个 .class文件—解耦–用哪个调用哪个

一、类和对象的初步认识

面向对象的语言:java、c++、python
go语言不是
面向过程的语言:C ----处理小问题
面向对象的语言:C++ JAVA ----处理问题规定模较大的数据
步骤:找对象 创建对象 使用对象
OOP语言的三大特征:继承 封装 多态
OOP:Object Oriented Programming 面向对象编程

二、类和类的实例化

1、类:高配的结构体,自定义的类型,抽象的东西,模板
对象:根据类产生的实体
2、class 类名{
类体;
}
3、类体:
(1)属性:定义在类的内部 方法的外部
(成员变量) 实例数据成员(属于对象)
静态数据成员(访问:类名.静态数据成员)
(2)行为:方法
(成员方法) 实例成员方法(eat)
静态成员方法(age)
4、使用:
一个类可以实例化多个对象,new:Person per = new Person();
实例化对象后,访问对象的数据成员:per.数据成员 per.方法
在这里插入图片描述

如果类当中的数据成员没有初始化,默认值为对应0值:
引用类型:null 简单类型:0 char:\u0000 Boolean:false

三、类的成员

1、类的成员可以包括:字段、方法 、 代码块 、 内部类 、接口等
属性 行为 静态代码块 静态内部类
实例代码块 实例内部类
本地代码块 本地内部类
同步代码块 匿名内部类

3、static关键字
(1)修饰属性:count被static修饰,所有类共享,不属于对象
访问形式:类名 . 属性
(2)修饰方法(静态方法)在任何方法上应用 static 关键字----不依赖于对象
静态的数据成员和方法,只需通过类名访问或调用。
静态方法属于类,而不属于类的对象。
可以直接调用静态方法,而无需创建类的实例。
静态方法可以访问静态数据成员,并可以更改静态数据成员的值。
同一个类的不同实例共用一个静态属性。
在静态方法内部不能访问实例数据成员,不允许调用实例成员方法
不能直接访问 间接的可以:
在这里插入图片描述

四、 封装

本质:让类的调用者不必太了解类的实现者是如何实现的,只知道如何使用
1、private实现封装:private和public访问修饰限定符
2、getter setter方法
自动生成:【Alt】+insert(f12/f11)
this:当前对象的引用
this不代表当前对象:在构造函数里可以用this,而构造函数是为了产生对象,所以this不代表当0前对象
静态方法内部不能使用this
this.成员变量
this.成员方法
this.()//调用构造方法,必须放在第一行,只能调用一个构造方法
在这里插入图片描述
在这里插入图片描述

给数据成员初始化的方式:
(1)提供一系列的getter和setter方法(见上面)
(2)构造方法
(3)使用代码块初始化

五、构造方法

1、作用:用来产生对象
方法名与类型相同 无返回值
如果编译器没有提供任何构造方法,那么编译器会默认生成一个不带有参数的构造方法,仅此情况会产生
构造方法可以发生重载:函数名相同,参数不同(类型 个数),返回值不做要求
生成一个对象共几步(new的执行过程)
(1)给对象分配内存
(2)调用合适的构造方法。(构造方法不止一个)

六、代码块

(1)本地代码块(普通代码块)—方法内部 不常用
{
int a = 10;
}
(2)实例代码块(构造块)—初始化实例数据成员,和构造方法同级
public Person{
this.name = “”
}
{
this.age = 1000;
sout(“abc”);
}
(3)静态代码块—初始化静态数据成员,只执行一次
class Person{
public static int count;
static{
count = 888;
}}
执行顺序:静态代码块 > 实例代码块 > 构造方法(与前后顺序无关)
静态代码块 与 静态数据成员,看前后顺序(实例同)
在这里插入图片描述
在这里插入图片描述

七、补充

1、toString方法
Person person = new Person()
sout(person); => Person@16d3586
默认调用Object的toString()方法
Object是所有类的父类
如果当前类没有重写Object的toString方法,那么当调用sout的时候,会默认调用Object的toString方法(打印地址的哈希码值);如果当前类重写了Object的toString方法,那么就会调用重写的方法
@Override —重写
在这里插入图片描述
在这里插入图片描述
运行:
在这里插入图片描述
2、匿名对象
通过匿名对象调用方法:
new Person(“bjyx”,25).show();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值