java中与封装有关的关键字_Java基础4—{面向对(面向对象思想、类与对象、成员变量和局部变量、匿名对象、封装、this关键字))}...

1.面向对象

1.1 面向对象思想概述

1:面向对象思想概述

当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。

可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻烦了。这时就开始思索,

能不能把这些步骤和功能在进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在一起。

这样结构就清晰了很多。用的时候,找到对应的类就可以了。这就是面向对象的思想。

2:面向对象思想特点

a:是一种更符合我们思想习惯的思想 懒人思想

b:可以将复杂的事情简单化

c:将我们从执行者变成了指挥者

角色发生了转换

3:面向对象特征

封装(encapsulation)

继承(inheritance)

多态(polymorphism)

4:面向对象开发

就是不断的创建对象,使用对象,指挥对象做事情。

1.2 类与对象概述

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

a:成员变量 和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。

b:成员方法 和以前定义方法是一样的,只不过把static去掉,后面在详细讲解static的作用。

2:类和对象的概念

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

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

c:举例:

类 学生

对象 班长就是一个对象

1 public class Person { //定义一个类:class2 //成员属性,成员变量:定义在类中方法外

3 String name="zhangsan";4 intage;5 charsex;6 //成员功能,成员方法

7 public voideat() {8 System.out.println("吃饭");9 }10

11 public voidsleep() {12 System.out.println("睡觉");13 }14

15 public voidplayGame() {16 System.out.println("打豆豆");17 }18 }

1.3 类的使用(以Person类为例)

1:文件名问题

在一个java文件中写两个类:一个基本的类,一个测试类。

建议:文件名称和测试类名称一致。

2:如何使用呢?

创建对象使用。

3:如何创建对象呢?

格式:类名 对象名 = new 类名();

4:如何使用成员变量呢?

格式:对象名.变量名

5:如何使用成员方法呢?

格式:对象名.方法名(...)

1 public classDemo08 {2 public static voidmain(String[] args) {3 //创建成员变量

4 Person person = newPerson();5 //使用成员变量

6 int age =person.age;7 //使用成员方法

8 person.eat();9 }10 }11 class Person { //定义一个类:class12 //成员属性,成员变量:定义在类中方法外

13 String name="zhangsan";14 intage;15 charsex;16 //成员功能,成员方法

17 public voideat() {18 System.out.println("吃饭");19 }20 public voidsleep() {21 System.out.println("睡觉");22 }23 public voidplayGame() {24 System.out.println("打豆豆");25 }26 }

1.4 成员变量和局部变量的区别

1:在类中的位置不同

成员变量:在类中方法外

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

2:在内存中的位置不同

成员变量:在堆内存

局部变量:在栈内存

3:生命周期不同

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

局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

4:初始化值不同

成员变量:有默认初始化值

局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。

注意事项:: 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

1 public classMyTest2 {2 public static voidmain(String[] args) {3 Student student = newStudent();4 student.show("王五");5 }6 }7 classStudent {8 //成员变量

9 String name="张三";10 //局部变量

11 public voidshow(String name) {12 //当成员变量和局部变量重名时,那么访问变量的规则就遵从就近原则13 //就近原则:先从局部范围找,找个变量,找到就使用,如果找不到,去成员位置找,找到就成员

14 System.out.println(name);//王五

15 System.out.println(this.name);//张三

16 }17 }

1.5 匿名对象的概述和应用

1:什么是匿名对象

就是没有名字的对象

2:匿名对象应用场景

a:调用方法,仅仅只调用一次的时候。

b:匿名对象可以作为实际参数传递。

1 public classMyTest {2 public static voidmain(String[] args) {3 //匿名对象可以作为参数来传递

4 test(newA());5 test(newA());6 }7 public static voidtest(A a){8 a.show();9 }10 }11 classA{12 public voidshow(){13 System.out.println("这是一个show方法");14 }15 }

1.6 封装的概述

1:封装概述

是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

2:封装好处

隐藏实现细节,提供公共的访问方式

提高了代码的复用性

提高安全性。

3:封装原则

将不需要对外提供的内容都隐藏起来。

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

1.7 private关键字的概述和特点

1:private关键字特点

a:是一个权限修饰符

b:可以修饰成员变量和成员方法

c:被其修饰的成员只能在本类中被访问

2:案例演示

private关键字特点

3:private最常见的应用:

(1):把成员变量用private修饰

(2):提供对应的getXxx()和setXxx()方法

1 public classPhone {2 //私有成员变量

3 privateString name;4 private doubleprice;5 //提供公共的set get 方法

6 public voidsetName(String mingzi){7 name=mingzi;8 }9 public void setPrice(doublejiage){10

11 price=jiage;12 }13 publicString getName(){14

15 returnname;16 }17 public doublegetPrice(){18

19 returnprice;20 }21 }

1.8 this关键字的概述和特点

1:为什么要有this

当我们的局部变量和成员变量相同的时候,如果我们不使用this关键字,那么会导致一个问题:就是局部变量隐藏了成员变量的问题

2:this关键字特点

是当前类的对象引用。

简单的记,它就代表当前类的一个对象。谁调用这个方法,那么该方法的内部的this就代表谁

3:this的应用场景

解决局部变量隐藏成员变量

1 public classTest {2 public static voidmain(String[] args) {3 Phone phone = newPhone();4 System.out.println(phone + "调用者的地址值");5 phone.setName("小米");6 phone.setPrice(500);7

8 System.out.println("------------------------");9 Phone phone2 = newPhone();10 System.out.println(phone2 + "调用者的地址值");11 phone2.setName("小米");12 phone2.setPrice(500);13

14 }15 static classPhone {16 privateString name;17 private doubleprice;18 public voidsetName(String name){19 System.out.println("this代表调用者的地址值"+this);20 this.name=name;21 }22 public void setPrice(doubleprice){23 System.out.println("this代表调用者的地址值" + this);24 this.price=price;25 }26 }27 }

运行结果:

461afaac51cdd257d952da0b3cfe51cc.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值