09day_Java面向对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了09day_Java面向对象相关的知识,希望对你有一定的参考价值。

1、类和对象的关系

  类,事物的抽象描述;

  对象,该类事物的个体;

  对象是根据类创建的,并且一个类可以对应多个对象。

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

  (1)定义位置上的区别:成员变量定义在类中方法外;局部变量定义在方法内、语句内。

  (2)作用域不同:成员变量作用范围是整个类;局部变量作用范围是方法内、语句内。

  (3)初始化不同:成员变量有自己的默认值;局部变量没有默认值,不赋值不能使用。

  (4)内存位置不同:成员变量跟随对象进入堆内存存储;局部变量跟随自己的方法进入栈内存。

  (5)生命周期不同:成员变量跟随对象在堆中存储,内存等待JVM清理,生命相对较长;局部变量跟随方法,方法出栈,生命相对较短。

3、封装

  面向对象的三个特征:封装、继承、多态;

  封装的体现:

  (1)方法就是一个最基本封装体;

  (2)类其实也是一个封装体。

  封装的好处:

  (1)提高了代码的复用性;

  (2)隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。这是核心之一,也可以理解为就是封装的概念;

  (3)提高了安全性。

4、private关键字  

  private 私有,属于成员修饰符,不能修饰局部变量;

  被private修饰的成员,只能在自己的本类被使用;

  对私有变量,提供公共的访问方式:方法;

  类中不需要对外提供的内容都私有化,包括属性和方法;

  以后再描述事物,属性都私有化,并提供setXxx getXxx方法对其进行访问;

  私有仅仅是封装的体现形式而已。

  调用set方法,对成员变量进行赋值;

  调用get方法,获取成员变量的值

 1 public class Person {
 2     String name;// 人的姓名,成员变量
 3     private int age;// 人的年龄,成员变量
 4 
 5     // 定义方法,对age变量进行赋值,方法名字,必须set开头
 6     public void setAge(int a) {
 7         // 对变量参数a进行参数的限制
 8         if (a < 0 || a > 200) {
 9             // 如果a超过范围,手动将age赋值为20
10             age = 20;
11         } else {// 如果没有超过范围,直接对age赋值
12             age = a;
13         }
14     }
15 
16     // 定义方法,对变量age获取值使用,方法名字get
17     public int getAge() {
18         return age;
19     }
20 
21     // 人的说话功能
22     public void speak() {
23         System.out.println(name + "..." + age);
24     }
25 }
 1 public class PersonTest {
 2     public static void main(String[] args) {
 3         // 创建Person类的对象
 4         Person p = new Person();
 5         // 对成员变量赋值
 6         // p.age = -20;
 7         // 对成员变量age赋值,只能调用Set方法
 8         p.setAge(50);
 9         p.name = "张三";
10         p.speak();
11 
12         // 输出成员变量age值,必须调用get方法
13         System.out.println(p.getAge());
14     }
15 
16 }

运行结果:

技术分享图片

 

 5、this关键字

  区分成员变量和局部变量的同名情况;

  在方法中访问成员变量,需要在变量之前加上this.

1 // 人的说话功能
2     public void speak() {
3         this.name="李四";
4         this.age = 16;
5         System.out.println(name + "..." + age);
6     }

 

 

  

以上是关于09day_Java面向对象的主要内容,如果未能解决你的问题,请参考以下文章

03day_Java面向对象

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

07day_Java基础语法

03day_Java基础语法

01day_Java基础语法