重学Java 10 面向对象

这篇具有很好参考价值的文章主要介绍了重学Java 10 面向对象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

正是风雨欲来的时候,火却越烧越旺了     

                                          ——24.1.20

重点

1.为何使用面向对象思想编程

2.如何使用面向对象思想编程

3.何时使用面向对象思想编程

4.利用代码去描述世间万物的分类

5.在一个类中访问另外一个类中的成员 -> new对象

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

一、面向对象的介绍

1.面向过程:自己的事情自己干,代表语言:C语言

                eg、洗衣服:每一步都自己干 -> 找个盆,加水,放洗衣粉,找搓衣板,开始洗衣

2.面向对象:自己的事情别人帮忙去做,代表语言:Java语言

                eg、洗衣服:自己的事情别人干 -> 全自动洗衣机

3.使用面向对象思想编程:方便快捷

                很多功能都已经实现好了,只需要将其拿来使用即可,简化了我们自己的编写过程,减少了代码量

4.什么时候使用面向对象思想编程:

                调用别人的功能时

                在一个类中想使用别的类中的思想时,就使用面向对象思想编程

                至于使用的代码功能细节,我们不关心,我们只需要知道如何使用即可

5.如何使用面向对象思想编程:

        ①new,new. -> 点代表的是调用

        ②特殊:如果调用的成员带static关键字,我们直接使用类名点即可

二、类和对象

2.1  类(实体类)_class

1.测试类:带main方法的类,主要是运行代码的

2.实体类:是一类事物的抽象表示形式

                 世间万物的分类:比如:犬类、人类、猫类、鼠标类

        组成部分:

                1.属性(成员变量):这一类事物有什么

                        ①定义位置:类中方法外

                        ②作用范围:作用于当前类

                        ③定义格式:数据类型 变量名

                        ④默认值:

                                整数:0        小数:0.0        字符:'\U0000‘        布尔:false        引用:null

                2.行为(成员方法):这一类的事物能干嘛

                        只需要将方法中所学的static干掉,其他的都一样

只需要将某个分类的属性和行为描述出来,就可以描述这个类

案例

人类

public class Demo65Object02Person {
    //属性 -> 成员变量
    String name;
    int age;

    //行为 -> 成员方法
    public void eat(){
        System.out.println("人要吃饭");
    }

    public void drink(){
        System.out.println("人要喝水");
    }
}

动物类

public class Demo66Object03Animal {
    String kind;//品种
    String color;//颜色

    public void eat(){
        System.out.println("动物要吃东西");
    }

    public void sleep(){
        System.out.println("动物要睡觉");
    }

小明类

public class Demo67Object04Phone {
    //属性
    String brand;
    String color;
    int price;

    //行为
    public void call(String name){
        System.out.println("给"+name+"打电话");
    }

    public String message(){
        return "给小明发短信";
    }

2.2 对象

1.概述:一类事物的具体体现

2.使用:

        ①导包

                如果两个类在同一个包下,想要使用对方的成员不需要导包

                如果两个类不在同一个包下,想要使用对方的成员需要导包

                特殊包:java.lang -> 使用lang包下的类,不需要导包 -> String

                注:在学习四种权限修饰符前,尽量让两个类在同一个包下

        ②创建对象:想要使用哪个类中的成员,就new哪个类的对象

                类名 对象名 = new 类名() -> 如:Person person = new Person();

                                                                         Animal animal = new Animal();

        ③调用成员(成员变量、成员方法) -> 想要使用哪个类中的成员,便用哪个类的对象去点哪个成员

                对象名.成员变量名 = 值

                对象名.方法名() -> 调用的是无参无返回值的方法

                对象名.方法名(实参)-> 调用的是无参有返回值的方法

                数据类型 变量名 = 对象名.方法名() -> 调用的是无参有返回值的方法

                数据类型 变量名 = 对象名.方法名(实参) -> 调用的是有参有返回值的方法

示例

public class Demo65Object02Person {
    //属性 -> 成员变量
    String name;
    int age;

    //行为 -> 成员方法
    public void eat(){
        System.out.println("人要吃饭");
    }

    public void drink(){
        System.out.println("人要喝水");
    }
}

public class Demo66Object03Animal {
    String kind;//品种
    String color;//颜色

    public void eat(){
        System.out.println("动物要吃东西");
    }

    public void sleep(){
        System.out.println("动物要睡觉");
    }
}

public class Demo67Object04Phone {
    //属性
    String brand;
    String color;
    int price;

    //行为
    public void call(String name){
        System.out.println("给"+name+"打电话");
    }

    public String message(){
        return "给小明发短信";
    }
}

    public static void main(String[] args) {
        Demo65Object02Person p = new Demo65Object02Person();
        p.age = 21;
        p.name = "小明";
        p.drink();
        p.eat();
        System.out.println(p.age);
        System.out.println(p.name);
        System.out.println("—————————————————————————————————————————————");

        Demo66Object03Animal a = new Demo66Object03Animal();
        a.color = "白色";
        a.kind = "金毛巡回犬";
        a.sleep();
        a.eat();
        System.out.println(a.color);
        System.out.println(a.kind);
        System.out.println("————————————————————————————————————————————");

        Demo67Object04Phone ph = new Demo67Object04Phone();
        ph.brand = "oppo findx3pro";
        ph.color = "white";
        ph.price = 5799;
        ph.message();
        ph.call("张三");
        System.out.println(ph.brand);
        System.out.println(ph.color);
        System.out.println(ph.price);
        ph.call("小明");
        ph.message();
    }

重学Java 10 面向对象,Java从0到1,java,开发语言

练习

用代码描述一个手机类,在测试类中为手机类中的属性赋值,并且调用手机类中的功能

public class Demo67Object04Phone {
    //属性
    String brand;
    String color;
    int price;

    //行为
    public void call(String name){
        System.out.println("给"+name+"打电话");
    }

    public String message(){
        return "给小明发短信";
    }
}
    

public static void main(String[] args) {
    Demo67Object04Phone phone = new Demo67Object04Phone();//手机类类名
    phone.brand = "OPPO Findx3Pro";
    phone.price = 5599;
    phone.color = "白色";
    System.out.println(phone.brand);
    System.out.println(phone.price);
    System.out.println(phone.color);
    phone.call("小明");
    phone.message();
}

重学Java 10 面向对象,Java从0到1,java,开发语言

2.3.匿名对象的使用

1.int i = 10;

        ①int:是数据的类型

        ②i:变量名

        ③等号右边的10:真正的数据

2.Person p = new Person()

        ①等号左边的Person:对象的类型,好比是int

        ②p:对象名

        ③等号右边的new Person:真正的数据,是一个Person对象,将这个对象真正创建出来了

1.所谓的匿名对象,其实就是没有等号左边的部分,只有等号右边的部分(对象)

2.使用:

        new 对象().成员

3.注意:

        ①如果只想单纯的调用一个方法,让方法执行,我们可以考虑匿名对象

        ②但是如果涉及到赋值,千万不要使用匿名对象

示例

public class Demo65Object02Person {
    //属性 -> 成员变量
    String name;
    int age;

    //行为 -> 成员方法
    public void eat(){
        System.out.println("人要吃饭");
    }

    public void drink(){
        System.out.println("人要喝水");
    }
}


public class Demo70Object07PersonNoName {
    public static void main(String[] args) {
        //原始方式
        Demo65Object02Person p = new Demo65Object02Person();
        p.name = "小明";
        System.out.println(p.name);
        p.eat();

        System.out.println();

        //匿名对象方式
        new Demo65Object02Person().eat();
    }
}

重学Java 10 面向对象,Java从0到1,java,开发语言

        //匿名对象方式:
        new Demo65Object02Person().eat();
        new Demo65Object02Person().name = "小红";
        System.out.println(new Demo65Object02Person().name);    //null
        //无法输出

重学Java 10 面向对象,Java从0到1,java,开发语言

涉及到赋值,千万不要使用匿名对象

重学Java 10 面向对象,Java从0到1,java,开发语言

三、对象的内存解析

1.一个对象的内存图

重学Java 10 面向对象,Java从0到1,java,开发语言

2.两个对象的内存图

重学Java 10 面向对象,Java从0到1,java,开发语言

phone1和phone2都是新new出来的对象,所以在堆内存中开辟了两个不同的空间,修改自己空间中的数据不会影响其他空间中的数据

3.两个对象指向同一个空间的内存图

重学Java 10 面向对象,Java从0到1,java,开发语言    重学Java 10 面向对象,Java从0到1,java,开发语言

重学Java 10 面向对象,Java从0到1,java,开发语言

phone2是phone1给的,phone1在内存中保存的是地址值,所以此时phone2和phone1的地址值一样,操作同一片空间中的数据,所以修改一个对象的数据会影响另一个对象

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

1.定义位置不同*

        成员变量:类中方法外

        局部变量:方法之中或者参数位置

2.初始化值不同*

        成员变量:有默认值,不用手动赋值,可以直接使用

        局部变量:没有默认值,必须手动先赋值,才能使用

3.作用范围不同*

        成员变量:作用于整个类

        局部变量:只作用于自己所在的方法,其他方法用不了

4.内存位置不同

        成员变量:在堆中,跟着对象走

        局部变量:在栈中,跟着方法走

5.生命周期不同

        成员变量:随着对象的产生而产生,随着对象的消失而消失

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

五、练习

定义一个类MyDate,属性有year、month、day

        在定义一个Citizen(公民类),属性有name(String类型),birthday(MyDate类型),idcard(string类型),为这三个属性赋值,然后将值取出

自定义生日类型

//自定义生日类型
public class Demo71Object08MyDate {
    int year;
    int month;
    int day;
}


自定义公民类 

//自定义公民类
public class Demo72Object09Citizen {
    //姓名
    String name;        //默认值null
    // 生日 Mydate类型
    // Mydate属于自定义类型(引用数据类型)
    // 这种类型要操作之前,必须要赋值
    // 这种自定义对象,需要new对象赋值
    Demo71Object08MyDate birthday;      //默认值null
    //身份证
    String idcard;      //默认值null
}

主函数

    public static void main(String[] args) {
        Demo72Object09Citizen citizen = new Demo72Object09Citizen();
        citizen.name = "张三";
        citizen.idcard = "04214047";
        citizen.birthday = new Demo71Object08MyDate();

        /*Stringbuilder
            citizen.birthday获取的是Mydate对象
            再去点year获取的是Mydate对象中的year
            链式调用
         */
        citizen.birthday.year = 2002;
        citizen.birthday.month = 11;
        citizen.birthday.day = 4;

        System.out.println(citizen.name + "," + citizen.birthday.year + "年"
                 + citizen.birthday.month + "月" + citizen.birthday.day + "日 " + "学号:" + citizen.idcard);
    }

重学Java 10 面向对象,Java从0到1,java,开发语言 

运行结果

给自定义的类型(引用数据类型)赋值,需要new对象(String比较特殊,可以直接=赋值)

六、总结

重学Java 10 面向对象,Java从0到1,java,开发语言

重学Java 10 面向对象,Java从0到1,java,开发语言

重学Java 10 面向对象,Java从0到1,java,开发语言

重学Java 10 面向对象,Java从0到1,java,开发语言文章来源地址https://www.toymoban.com/news/detail-811388.html

到了这里,关于重学Java 10 面向对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 🔥🔥Java开发者的Python快速进修指南:面向对象进阶

    在上一期中,我们对Python中的对象声明进行了初步介绍。这一期,我们将深入探讨对象继承、组合以及多态这三个核心概念。不过,这里不打算赘述太多理论,因为我们都知道,Python与Java在这些方面的主要区别主要体现在语法上。例如,Python支持多重继承,这意味着一个类可

    2024年02月05日
    浏览(61)
  • 🔥🔥Java开发者的Python快速进修指南:面向对象基础

    当我深入学习了面向对象编程之后,我首先感受到的是代码编写的自由度大幅提升。不同于Java中严格的结构和约束,Python在面向对象的实现中展现出更加灵活和自由的特性。它使用了一些独特的,如self和cls,这些不仅增强了代码的可读性,还提供了对类和实例的明确

    2024年02月05日
    浏览(68)
  • 🔥🔥Java开发者的Python快速进修指南:面向对象--高级篇

    首先,让我来介绍一下今天的主题。今天我们将讨论封装、反射以及单例模式。除此之外,我们不再深入其他内容。关于封装功能,Python与Java大致相同,但写法略有不同,因为Python没有修饰符。而对于反射来说,我认为它比Java简单得多,不需要频繁地获取方法和属性,而是

    2024年02月05日
    浏览(66)
  • Java开发者的Python快速进修指南:面向对象--高级篇

    首先,让我来介绍一下今天的主题。今天我们将讨论封装、反射以及单例模式。除此之外,我们不再深入其他内容。关于封装功能,Python与Java大致相同,但写法略有不同,因为Python没有修饰符。而对于反射来说,我认为它比Java简单得多,不需要频繁地获取方法和属性,而是

    2024年02月05日
    浏览(68)
  • 面向Java开发者的ChatGPT提示词工程(10)

    在ChatGPT的众多应用中,拼写检查和语法检查犹如璀璨的明珠,受到广大用户的热烈追捧。我对此深信不疑,且一直在实践中坚定不移。特别是在使用非母语的情况下,它的作用更为显著。接下来,让我们通过一些常见的拼写和语法问题的实例,一探ChatGPT如何巧妙地帮助我们

    2024年01月18日
    浏览(61)
  • c、c++、java、python、js对比【面向对象、过程;解释、编译语言;封装、继承、多态】

    目录 内存管理、适用 区别 C 手动内存管理:C语言没有内置的安全检查机制,容易出现内存泄漏、缓冲区溢出等安全问题。 适用于系统级编程 C++ 手动内存管理:C++需要程序员手动管理内存,包括分配和释放内存,这可能导致内存泄漏和指针错误。 适用于游戏引擎和系统级编

    2024年02月08日
    浏览(76)
  • Java——Java面向对象

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架。 Java是面向对象的程序设计语言,Java语言提供了定义类、成员变量、方法等最基本的功能。

    2024年02月02日
    浏览(43)
  • 【JAVA杂货铺】一文带你走进面向对象编程的构造方法 | Java| 面向对象编程 | (中)

    🌈个人主页:  Aileen_0v0 🔥系列专栏: Java学习系列专栏 💫个人格言: \\\"没有罗马,那就自己创造罗马~\\\"   目录 回顾  构造方法  this 面试题 构造方法的类型  下节预告 代码块  之前我们学习了什么是类  什么是对象  什么是面向对象编程 定义类   构造方法 :它的方法名

    2024年02月05日
    浏览(55)
  • 【Java面试题】Java基础——面向对象

    重载和重写的区别★★★ 重载(Overloading)和重写(Overriding)都是Java中面向对象编程的特性,它们都可以让子类继承父类的方法。但是它们之间有一些重要的区别: 定义方式: 重载(Overloading): 在同一个类中 ,可以有 多个方法名相同但参数列表不同的方法 。当调用一个方法时,

    2024年02月11日
    浏览(38)
  • Java面向对象01——类与对象

    大家好,我是白夜,今天和大家聊聊类与对象 面向过程编程 C 语言就是面向过程编程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 面向对象编程 JAVA 是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 举

    2024年04月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包