面向对象的一些概念性问题

面向对象本身是一种思维方式。

面向过程---注重流程中的每一个步骤/动作

面向对象---看重的是对象,只要找到了对应的这个对象,就拥有了对象身上的一系列功能

面向对象优于面向过程吗?---如果处理的是一些相对简单的事物,建议使用面向过程;如果处理的是一些相对复杂的事物,建议使用面向对象

把大象装进冰箱---要找的对象是冰箱

打开冰箱门

将大象塞进冰箱

关上冰箱门

面向对象实际上是基于面向过程的

类与对象的关系

对一类对象进行概括,将这一类对象的共有特征和共有行为进行抽取,将特征抽取为了属性,将行为抽取为方法,形成了一个可以代表这一类对象的类---类是对象的概括/抽取

有了类之后,可以根据new关键字来创建于一个本类对象---对象是类的具体化

练习:定义一个类代表矩形,在这个类中定义对应的方法来计算该矩形的周长和面积

构造方法

在类中与类同名而没有返回值类型的方法----作用:创建对象。

如果一个类没有手动添加构造函数,那么JVM在编译的时候默认添加一个无参构造;如果手动指定了则不再添加。

构造方法可以进行重载。

对象的内存图

对象在内存中存储在堆内存中,并且对象中的属性在堆内存中自动的赋予默认值。对于byte/short/int->0, long -> 0L, float -> 0.0f, double ->0.0d, boolean ->false char -> ‘\u0000’, 其他的属于引用类型,如果是引用类型的话,默认值统一为null

当进行对象的赋值的时候,实际上两个对象之间传递的是地址。

this

注意:在Java中所有的非静态属性和非静态方法都是通过对象来调用的。

在定义类的过程中,没有具体的本类对象,用this代替具体对象来调用本类中的普通方法和属性。---而当创建好具体对象之后,this就代表了对应的对象---this代表了当前在活动的对象的引用

class Student {

String name;

int age;

char gender;

public void study(){

System.out.println(this.name+ “在学习~~~”);

}

}

Student s = new Student(); // 当创建好这个s对象的时候,this就代表了s

Student s2 = new Student(); // this就代表s2

s.study(); // this代表s

this语句---表示在本类中调用本类其他形式的构造函数---必须放在构造函数的第一行

构造代码块

在类中用{}包起来的代码,也称之为初始化代码块。---无论调用哪种形式的构造函数,都会先于构造函数来执行一次。---提高代码的复用性

匿名对象

没有名字的对象---指定在定义的时候使用一次---在栈内存中没有引用,可以作为参数进行传递

局部代码块

在方法中用{}包起来的代码---限制变量的使用范围,从而限制了变量的声明周期,提高内存的利用率

面向对象的特征

封装、继承、多态(、抽象)

封装

体现形式:方法,属性的私有化---将属性设置为private,通过对外的方法来获取或者设置这个属性的值,是为了限制属性的值符合实际场景。

优点:提高代码的复用性,提高代码的安全性(主要指的是数据的安全)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值