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 { //定义一个类:class
 2     //成员属性,成员变量:定义在类中方法外
 3     String name="zhangsan";
 4     int age;
 5     char sex;
 6     //成员功能,成员方法
 7     public void eat() {
 8         System.out.println("吃饭");
 9     }
10 
11     public void sleep() {
12         System.out.println("睡觉");
13     }
14 
15     public void playGame() {
16         System.out.println("打豆豆");
17     }
18 }

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

  • 1:文件名问题

    在一个java文件中写两个类:一个基本的类,一个测试类。
建议:文件名称和测试类名称一致。

  • 2:如何使用呢?

创建对象使用。

  • 3:如何创建对象呢?

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

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

格式:对象名.变量名

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

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

 1 public class Demo08 {
 2     public static void main(String[] args) {
 3         //创建成员变量
 4         Person person = new Person();
 5         // 使用成员变量
 6         int age = person.age;
 7         //使用成员方法
 8         person.eat();
 9     }
10 }
11 class Person { //定义一个类:class
12     //成员属性,成员变量:定义在类中方法外
13           String name="zhangsan";
14             int age;
15             char sex;
16      //成员功能,成员方法
17              public void eat() {
18                 System.out.println("吃饭");
19             }
20              public void sleep() {
21                  System.out.println("睡觉");
22             }
23              public void playGame() {
24                 System.out.println("打豆豆");
25             }
26  }

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

  • 1:在类中的位置不同

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

  • 2:在内存中的位置不同

    成员变量:在堆内存
    局部变量:在栈内存

  • 3:生命周期不同

    成员变量:随着对象的创建而存在,随着对象的消失而消失
    局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

  • 4:初始化值不同

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

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

 1 public class MyTest2 {
 2     public static void main(String[] args) {
 3         Student student = new Student();
 4         student.show("王五");
 5     }
 6 }
 7 class Student {
 8     // 成员变量
 9     String name="张三";  
10                     //局部变量
11     public void show(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 class MyTest {
 2     public static void main(String[] args) {
 3         //匿名对象可以作为参数来传递
 4         test(new A());
 5         test(new A());
 6     }
 7     public static void test(A a){
 8         a.show();
 9     }
10 }
11 class A{
12     public void show(){
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 class Phone {
 2     //私有成员变量
 3     private String name;
 4     private double price;
 5     //提供公共的set get 方法
 6     public void setName(String mingzi){
 7         name=mingzi;
 8     }
 9     public void setPrice(double jiage){
10         
11         price=jiage;
12     }
13     public String getName(){
14         
15         return name;
16     }
17     public double getPrice(){
18         
19         return price;
20     }
21 }

1.8 this关键字的概述和特点

  • 1:为什么要有this

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

  • 2:this关键字特点

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

  • 3:this的应用场景

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

 1 public class Test {
 2     public static void main(String[] args) {
 3         Phone phone = new Phone();
 4         System.out.println(phone + "调用者的地址值");
 5         phone.setName("小米");
 6         phone.setPrice(500);
 7 
 8         System.out.println("------------------------");
 9         Phone phone2 = new Phone();
10         System.out.println(phone2 + "调用者的地址值");
11         phone2.setName("小米");
12         phone2.setPrice(500);
13 
14     }
15     static class Phone {
16         private String name;
17         private double price;
18         public void setName(String name){
19             System.out.println("this代表调用者的地址值"+this);
20             this.name=name;
21         }
22         public void setPrice(double price){
23             System.out.println("this代表调用者的地址值" + this);
24             this.price=price;
25         }
26     }
27 }

运行结果:

 

猜你喜欢

转载自www.cnblogs.com/wanyan1234/p/12019150.html