6.1面向对象(介绍,类与对象,封装,this关键字,构造方法,static关键字)

一、面向对象思想

1.基于过程思想:给一个需求,通过分析需求,然后一步一步的去实现!完成一个功能的具体步骤!

面向对象思想:创建对象,使用对象调用功能!(主要:对象)


2.向对象思想的特点:

1)更符合我们的一些思想行为习惯

2)让复杂的事情简单化

3)让我们从执行者变成指挥者


3.面向对象:

把大象塞进冰箱案例:

首先要分析这个需求有哪些类?(UML:名词提取法)    冰箱  大象


4. 向对象的三大特征:  1)封装2)继承3)多态

 

二、类与对象及其使用

1. 我们学习的Java语言最基本单位是类,所以,我们就应该把事物用一个类来体现。

2. 类:是一组相关的属性和行为的集合

对象:是该类事物的具体体现

举例:

学生

对象班长就是一个对象

3.类的定义:

1)现实世界的事物: 属性人的身高,体重等

行为人可以学习,吃饭等

 

2Java中用class描述事物也是如此:成员变量就是事物的属性

成员方法就是事物的行为

定义类其实就是定义类的成员(成员变量和成员方法)

4.类的成员方法:成员方法其实就是我们前面讲过的方法

1)方法具体划分:(根据返回值):有明确返回值方法

返回void类型的方法

(根据形式参数):

无参方法

带参方法

5.一个基本类的标准代码写法:

1)类: 成员变量

构造方法:无参构造方法

带参构造方法

成员方法:getXxx()  setXxx()

2)给成员变量赋值的方式: 无参构造方法+setXxx()

带参构造方法

6.类的初始化过程:

Student s = new Student();在内存中做了哪些事情?

1)加载Student.class文件进内存

2)在栈内存为s开辟空间

3)在堆内存为学生对象开辟空间

4)对学生对象的成员变量进行默认初始化

5)对学生对象的成员变量进行显示初始化

6)通过构造方法对学生对象的成员变量赋值

7)学生对象初始化完毕,把对象地址赋值给s变量

  

三、对象内存图

1. 一个对象的内存图解:


 

2.两个对象的内存图解:

3.三个对象的内存图解:

四、成员变量和局部变量的区别

成员变量的位置:类中成员方法外

1. 在类中的位置不同

  a:成员变量:在类中,方法外

  b:局部变量:在方法声明上,或者是在方法定义中

2. 在内存里面的位置不一样

  a:成员变量:在堆内存

  b:局部变量:在栈内存

3. 生命周期不同

   a:成员变量:随着对象的创建而存在,随着对象的消失而消失

   b:局部变量:随着方法调用而存在,随着方法的调用结束而消失

4. 初始化值不同

   a:成员变量:有默认值:int类型:0引用类型:null

   b:局部变量:必须初始化值,否则报错!(在使用它之前,没有初始化)

  

  注意:当局部变量名称和成员变量名称一致的时候,就近原则!

 

五、匿名对象

匿名对象:就是没有名字的对象

  调用:执行一次

  不适合多次调用

    匿名对象可以作为参数进行传递

 

六、封装

1. 封装概述:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

2. 好处: 1) 隐藏实现细节,提供公共的访问方式

2)提高了代码的复用性

3)提高安全性。

3. 封装原则: 1)将不需要对外提供的内容都隐藏起来。

2)把属性隐藏,提供公共方法对其访问。

4.private关键字:1a. 是一个权限修饰符。

b.可以修饰成员(成员变量和成员方法)

c.private修饰的成员只在本类中才能访问。

 

2private最常见的应用:

a.把成员变量用private修饰

b.提供对应的getXxx()/setXxx()方法

 

七、this关键

1.this:代表所在类的对象引用

1记住:方法被哪个对象调用,this就代表那个对象

2什么时候使用this?

局部变量隐藏成员变量

其他用法后面和super一起讲解

2. 定义手机类:测试:

成员变量:私有化:

例:private String brand ;

    成员方法:set()/get(),打电话/发短信

set()/get()方法 :快捷键:Alt+shift+s:

3. 定义一个学生类:

  成员变量:姓名,年龄,性别

  成员方法:set()/get(),study(),sleep()

 给变量起名字:见名知意

 this:代表当前类的对象

 举例:

class Student{

//定义成员变量

private String name ;

private int age ;

private String gender ;

/*//提供get()/set()公共的访问方法

//姓名获取值

public String getName(){

return name ;

}

//姓名赋值

public void setName(String name){//局部变量   "高圆圆"

this.name = name ;//前面的name属于成员变量:局部变量和成员变量名称一致:就近原则:局部变量隐藏了成员变量

 *第一个name:应该Student类里面的name

 *这种情况:为了区分成员变量和局部变量.java提供了关键字:this

 * this:代表当前对象的引用,简单记:代表当前类的一个对象

 *

}

//年龄获取值

public int getAge(){

          return age ;

}

//年龄赋值

public void setAge(int age){

this.age =  age;

}

//性别获取值

public String getGender(){

return gender;

}

//性别赋值

public void setGender(String gender){

this.gender = gender ;

}*/

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

}

 

//测试类

public class StudentTest {

public static void main(String[] args) {

//创建对象

Student s = new Student() ;

s.setName("高圆圆") ;

s.setAge(27) ;

s.setGender("") ;

System.out.println(s.getName()+"-----"+s.getAge()+"-----"+s.getGender());

}

}

 

八、构造方法

1.构造方法:给数据进行初始化的

2.构造方法格式:  1)方法名与类名相同

           2)没有返回值类型,void都没有

          3)没有具体的返回值

3.构造方法注意事项:

1)如果你不提供构造方法,系统会给出默认构造方法

2)如果你提供了构造方法,系统将不再提供

3)构造方法也是可以重载的:方法名相同,参数列表(参数个数/参数类型)不同,与返回值没有关系

4.给成员变量赋值:

 两种方式:

  公共的访问方法:set()

 构造方法给成员变量赋值

 

九、static关键字

1.可以修饰成员变量和成员方法

2.  static关键字特点:1)随着类的加载而加载

2)优先于对象存在

3)被类的所有对象共享

这也是我们判断是否使用静态关键字的条件

4)可以通过类名调用

3. Static关键字注意事项:

1)在静态方法中是没有this关键字的

2)静态方法只能访问静态的成员变量和静态的成员方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值