大数据Java基础DAY7(面向对象基础)

目录

面向对象

类与对象的关系:

类的定义:

如何使用刚才创建的类呢?

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

形式参数的问题

匿名对象


面向对象

1、什么是面向对象的思想?
    面向对象的思想是基于面向过程的思想发展而来的。

    面向过程:强调的是实现功能的每一个步骤
    面向对象:强调的是对象,然后由这个对象去调用功能

2、面向对象的特点:
    1)、是一种更加符合我们现实生活习惯的思想
    2)、可以将复杂的事情简单化
    3)、我们从之前的参与者(执行者)变成了指挥者
 

类与对象的关系:

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

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

举例: 类 学生

对象 班长就是一个对象

类的定义:

现实世界的事物

属性  : 人的身高,体重等

行为   :人可以学习,吃饭等

Java中用class描述事物也是如此, 成员变量 :就是事物的属性。 成员方法 : 就是事物的行为

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

//创建一个老师类
class Teacher{
    //定义teacher的属性(成员变量)
    String name;  //定义姓名
    int age;      //定义年龄
    String sex;   //定义性别

    //定义teacher的行为(成员方法)
    public void teach(){          //定义一个教学生的方法
        System.out.println("教学生");
    }

}

如何使用刚才创建的类呢?

创建对象: 类名 对象名 = new 类名();

 调用方法: 对象名.成员变量 /对象名.成员方法

public class Test1 {
    public static void main(String[] args) {
        Teacher teacher=new Teacher();

        teacher.age=22;  //调用Teacher类的年龄属性,给其赋值
        System.out.println(teacher.age); //输出
        teacher.teach();  //调用Teacher类的成员方法
    }
}

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

1.在类中的位置不同

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

2.在内存中的位置不同

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

3.生命周期不同

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

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

4.初始化值不同

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

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

注意:局部变量和成员变量的名字一样时,在方法调用时采用就近原则。

形式参数的问题

1.当形式参数是基本数据类型时,将来调用方法传入的是常量值,或者是该类型的变量。

class Number{
    public int getSum(int a,int b){  //在一个类中定义一个求和方法
        return a+b;
    }
}
public class Test2 {
    public static void main(String[] args) {
        Number number=new Number();//在测试类中创建一个Number类的对象,只有创建了对象才能调用类中的方法

        System.out.println(number.getSum(10,20));//调用Number类中的求和方法,并输出结果。
    }
}

若在方法中对变量修改,不会影响到外部实际在栈内存中的值。

2.当形式参数是引用数据类型,调用方法传入的是该类对象的地址值

class Student2 {
    public void study() {   //在Student中创建一个学习的方法
        System.out.println("学习");
    }
}
class StudentTest2 {
    public void function(Student2 s) {   //创建StudentTest类,创建方法引用Student类的方法
        s.study();
    }
}
public class Test3 {
    public static void main(String[] args) {
        StudentTest2 studentTest2 = new StudentTest2();//想要调用function方法,需创建StudentTest2的对象

        Student2 student2 = new Student2();//创建Student2的对象
         studentTest2.function(student2);  //调用方法
    }
}

若在方法中对变量修改,会影响到外部实际堆内存中的值。

匿名对象

匿名对象:就是没有名字的对象,是对象的一种简化表示形式

匿名对象的两种使用情况 :

对象调用方法仅仅一次的时候 ;作为实际参数传递。

引用上面的学生类,new完对象后直接使用,:

class Student2 {
    public void study() {   //在Student中创建一个学习的方法
        System.out.println("学习");
    }
}
class StudentTest2 {
    public void function(Student2 s) {   //创建StudentTest类,创建方法引用Student类的方法
        s.study();
    }
}
public class Test3 {
    public static void main(String[] args) {
        StudentTest2 studentTest2 = new StudentTest2();//想要调用function方法,需创建StudentTest2的对象

        Student2 student2 = new Student2();//创建Student2的对象
         studentTest2.function(student2);  //调用方法

        new StudentTest2().function(new Student2());//当new 完对象后直接使用,没有使用变量名接收的对象,称之为匿名对象
    }
}

 注意:匿名对象不适合多次调用,每次new的时候都是一个新的匿名对象,会频繁的在堆内存中开辟空间,匿名对象使用完毕之后,无法使用第二次。

面向对象三大特征——封装icon-default.png?t=LBL2https://blog.csdn.net/qq_52400447/article/details/122520149

参与评论 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页

打赏作者

16年义务教育

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值