java学习---面向对象

定义一个学生类(Student):保护成员--> 姓名、年龄、成绩 定义一个老师类(Teacher):保护成员--> 年龄、职称由学生类和老师类共同派生出研究生类(Graduate):成员--> 作业 阅读详情

1. 类和对象

在这里插入图片描述

1.1 类和对象的理解【理解】

客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。

  • 类
    • 类的理解
      • 类是对现实生活中一类具有共同属性和行为的事物的抽象
      • 类是对象的数据类型,类是具有相同属性和行为的一组对象的集合
      • 简单理解:类就是对现实事物的一种描述
    • 类的组成
      • 属性:指事物的特征,例如:手机事物(品牌,价格,尺寸)
      • 行为:指事物能执行的操作,例如:手机事物(打电话,发短信)
  • 类和对象的关系
    • 类:类是对现实生活中一类具有共同属性和行为的事物的抽象
    • 对象:是能够看得到摸的着的真实存在的实体
    • 简单理解:类是对事物的一种描述,对象则为具体存在的事物

1.2 类的定义【应用】

类的组成是由属性和行为两部分组成

  • 属性:在类中通过成员变量来体现(类中方法外的变量)
  • 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)

类的定义步骤:

①定义类

②编写类的成员变量

③编写类的成员方法

public class 类名 {
	// 成员变量
	变量1的数据类型 变量1;
	变量2的数据类型 变量2;
	…
	// 成员方法
	方法1;
	方法2;	
}

示例代码:

/*
    手机类:
        类名:
        手机(Phone)

        成员变量:
        品牌(brand)
        价格(price)

        成员方法:
        打电话(call)
        发短信(sendMessage)
 */
public class Phone {
    //成员变量
    String brand;
    int price;

    //成员方法
    public void call() {
        System.out.println("打电话");
    }

    public void sendMessage() {
        System.out.println("发短信");
    }
}

1.3 对象的使用【应用】

  • 创建对象的格式:
    • 类名 对象名 = new 类名();
  • 调用成员的格式:
    • 对象名.成员变量
    • 对象名.成员方法();
  • 示例代码
/*
    创建对象
        格式:类名 对象名 = new 类名();
        范例:Phone p = new Phone();

    使用对象
        1:使用成员变量
            格式:对象名.变量名
            范例:p.brand
        2:使用成员方法
            格式:对象名.方法名()
            范例:p.call()
 */
public class PhoneDemo {
    public static void main(String[] args) {
        //创建对象
        Phone p = new Phone();

        //使用成员变量
        System.out.println(p.brand);
        System.out.println(p.price);

        p.brand = "小米";
        p.price = 2999;

        System.out.println(p.brand);
        System.out.println(p.price);

        //使用成员方法
        p.call();
        p.sendMessage();
    }
}

1.4 学生对象-练习【应用】

  • 需求:首先定义一个学生类,然后定义一个学生测试类,在学生测试类中通过对象完成成员变量和成员方法的使用
  • 分析:
    • 成员变量:姓名,年龄…
    • 成员方法:学习,做作业…
  • 示例代码:
class Student {
    //成员变量
    String name;
    int age;

    //成员方法
    public void study() {
        System.out.println("好好学习,天天向上");
    }

    public void doHomework() {
        System.out.println("键盘敲烂,月薪过万");
    }
}
/*
    学生测试类
 */
public class StudentDemo {
    public static void main(String[] args) {
        //创建对象
        Student s = new Student();

        //使用对象
        System.out.println(s.name + "," + s.age);

        s.name = "林青霞";
        s.age = 30;

        System.out.println(s.name + "," + s.age);

        s.study();
        s.doHomework();
    }
}

2. 对象内存图

2.1 单个对象内存图【理解】

]

2.2 多个对象内存图【理解】

  • 总结:

    多个对象在堆内存中,都有不同的内存划分,成员变量存储在各自的内存区域中,成员方法多个对象共用的一份

2.3 多个对象指向相同内存图【理解】

  • 总结

    当多个对象的引用指向同一个内存空间(变量所记录的地址值是一样的)

    只要有任何一个对象修改了内存中的数据,随后,无论使用哪一个对象进行数据获取,都是修改后的数据。

3. 成员变量和局部变量

3.1 成员变量和局部变量的区别【理解】

  • 类中位置不同:成员变量(类中方法外)局部变量(方法内部或方法声明上)
  • 内存中位置不同:成员变量(堆内存)局部变量(栈内存)
  • 生命周期不同:成员变量(随着对象的存在而存在,随着对象的消失而消失)局部变量(随着方法的调用而存在,醉着方法的调用完毕而消失)
  • 初始化值不同:成员变量(有默认初始化值)局部变量(没有默认初始化值,必须先定义,赋值才能使用)

3.1 成员变量和局部变量的区别【理解】

  • 类中位置不同:成员变量(类中方法外)局部变量(方法内部或方法声明上)
  • 内存中位置不同:成员变量(堆内存)局部变量(栈内存)
  • 生命周期不同:成员变量(随着对象的存在而存在,随着对象的消失而消失)局部变量(随着方法的调用而存在,醉着方法的调用完毕而消失)
  • 初始化值不同:成员变量(有默认初始化值)局部变量(没有默认初始化值,必须先定义,赋值才能使用)

练习

//定义类Student,包含三个属性:学号number(int),年级state(int),成绩 score(int)。
//创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。
//问题:打印出3年级(state值为3)的学生信息。
//提示: 1) 生成随机数:Math.random(),返回值类型double;  (Matn为工具类)([0,1})
//	  2) 四舍五入取整:Math.round(double d),返回值类型long
import static java.lang.Math.random;
public class Student {
    int number;
    int state;
    int score;
}

public class Test {
    public static void main(String[] args) {
        Student [] student=new Student[20];

        for (int i = 0; i < student.length; i++) {
            student[i]=new Student();
            student[i].state=(int)Math.round(Math.random()*6+1);
            student[i].number=i;
            student[i].score=(int)Math.round(Math.random()*100+1);
            if(student[i].state==3){
                System.out.println(student[i].state+","+student[i].number+","+student[i].score);
            }
        }

    }
}

PTA_类的定义与对象使用 题目来源 题目 请定义一个学生类(Student),包含学号、姓名、年龄(7-60岁)三个私有成员。从键盘输入学生的成员值后生成对象,并按要求输出相应的结果。 输入格式: 第一行一个整数k,代表后面要生成的学生人数。 从第二行开始的连续k行,每行3个数据,分别表示一个学生的学号、姓名和年龄。 输出格式: 输出每个学生的基本情况。如果数据不符合要求则输出"bad" 输入样例: 3 2... 阅读详情

相关推荐

别再踩坑了!Win10下用阿狸狗V3.2.6安装Cadence SPB 17.4的保姆级避坑指南

本文提供了Win10系统下使用阿狸狗V3.2.6安装Cadence SPB 17.4的详细避坑指南,涵盖环境准备、安装失败清理、分步安装与问题诊断、授权配置及典型故障排除等内容,帮助用户顺利完成安装并避免常见错误。

weixin_32576389的博客 359

类和对象

类和对象 1.1 类和对象的理解 客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。 类 类的理解 类是对现实生活中一类具有共同属性和行为的事物的抽象 类是对象的数据类型,类是具有相同属性和行为的一组对象的集合 简单理解:类就是对现实事物的一种描述 类的组成 属性:指事物的特征,例如:手机事物(品牌,价格,尺寸) 行为:指事物能执行的操作,例如:手机事物(打电话,发短信) ...

熊猫拿铁 402

DeepSeek-V4-Pro 正式版突袭上线:Agent 能力暴涨,DeepSWE 直接干翻 Claude Opus 4.8

8 月 12 日深夜,DeepSeek 悄悄在 API 文档里上架了一个新版本号——DeepSeek-V4-Pro-0813。第二天(13 日),这个版本被确认为 V4 Pro 正式版。没有发布会,没有预热,只改了版本号,就把整个 AI 圈的注意力又抢了过去。

2601_96613114的博客 839

【Java】类和对象详解

面向对象(Object-oriented)是一种程序设计的方法和编程范式,它以对象作为程序的基本单位,通过封装、继承、多态等概念来组织和实现程序逻辑。面向对象的编程思想强调将问题分解为对象的集合,每个对象具有自己的状态(属性)和行为(方法),并通过相互之间的消息传递来实现协助和交互。类(Class)是用来对一个实体(对象)进行描述的,主要包括实体(对象)的属性和行为的描述。在Java语言中,类是面向对象编程的基本组织单位,它是对象的模版或者蓝图,描述了对象的属性和行为。

qq_61635026的博客 8534

大语言模型在建筑规范自动化合规审查中的微调策略与规模效应实践

大语言模型(LLM)通过在海量文本数据上预训练,具备了强大的语言理解和生成能力。其核心原理是基于Transformer架构,通过自注意力机制捕捉长距离依赖关系。在工程实践中,为了将这种通用能力适配到建筑、法律、金融等高度专业化的垂直领域,通常需要采用领域微调技术。微调通过使用特定领域的高质量指令数据对模型参数进行更新,使其掌握专业术语、逻辑规则和任务范式,从而解决通用模型在专业场景下知识匮乏和“幻觉”问题。结合检索增强生成(RAG)技术,将动态外部知识库作为模型的“参考手册”,能进一步提升事实准确性并降低幻

weixin_30667831的博客 364

四足机器人机械结构设计:从腿型到驱动的全面解析

本文全面解析了四足机器人机械结构设计的核心要点。资深工程师老张深入探讨了并联腿与串联腿的选型策略、不同腿型布局对稳定性的影响,并详细对比了皮带轮与连杆驱动方式的优劣。文章结合实战经验,强调了足端设计、材料选择及整体结构轻量化等关键细节,为机器人开发者提供了从理论到实践的宝贵指导。

assembly8low的博客 633

类与对象的定义、对象的内存分析、对象的引用传递分析

面向对象: 面向对象时程序一种设计方法,并不代表所有开发者认同面向对象,有人认为面向对象过于复杂,更喜欢基于函数式的编程。 面向对象的前身是面向过程,面向过程是解决问题,面向对象时模块化设计。 面向对象的特点:  封装性:内部的操作对外部而言不可见;  继承性:在上一辈的基础上继续发展;  多态性:最重要的环节,利用多态性才可以得到良好的设计。 在进行面向对象开发:OOA(面向对象分析...

weixin_38266599的博客 504

8、硬件工程师笔试面试知识器件篇——二极管(2025版本)

当二极管正向偏置时(阳极相对于阴极为正电压),PN结内部的电场减小,允许电子和空穴复合,形成电流。而当二极管反向偏置时,PN结的电场增强,阻止电流通过。在接触区域,P型半导体中的空穴和N型半导体中的自由电子会相互扩散和复合,形成一个没有自由载流子的耗尽区。在设计电子电路时,平衡二极管的正向电压降(Vf)和最大电流(I)是一个重要的考虑因素,因为这两者直接影响电路的性能和效率。通过这些步骤,可以确保在设计电子电路时选择的二极管能够安全地处理预期的最大正向电流和最大反向电压,从而提高电路的可靠性和安全性。

XU157303764的博客 3501

用费曼学习法教小姐姐学习Java面向对象

大家好,这篇博客咱们聊聊学习Java的那些事。

程序员青戈 3500

Python爬虫实战:全方位解析前程无忧(51job)职位详情爬取及反爬破解

平台规模:覆盖全国各行业、数百万条岗位信息。数据特点:职位描述详细,职位标签丰富。数据价值:支持招聘趋势分析、职业发展研究、薪资行情调研。推荐Python 3.10+,支持最新async特性与库兼容。

2201_76125261的博客 1487

影像组学文章复现:ITHscore:通过多尺度放射学特征全面定量NSCLC肿瘤内异质性 ----小细胞肺癌肿瘤异质性评分

目的:通过计算机断层扫描(CT)图像量化非小细胞肺癌(NSCLC)的肿瘤内异质性(ITH)。 方法:整合局部辐射特征和全局像素分布模式,开发定量ITH测量-ITHscore。在六个患者队列(n = 1399)中检查ITHscore与肿瘤表型,基因型和患者预后的关联,以验证其在表征ITH方面的有效性。

xxx 1020

Java面向对象学习总结

抽象类(可以说是比父类抽象程度更高的父类,允许不写方法体)是不能被实例化(不能被new的)的类,通常用于定义一些通用的行为和属性,并要求子类提供具体的实现。抽象类可以包含抽象方法和非抽象方法。抽象类不能直接创建对象,只能通过子类实例化,且子类必须对父类的所有抽象方法进行重写。有抽象方法的类必须是抽象类,抽象类中不一定要有抽象方法,可以写具体方法。// 抽象方法void display() { // 非抽象方法@Override@Override// 输出: Drawing Circle。

m0_53999704的博客 1895

彻底解决Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource

Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource

renkai721的专栏 24万+

java面向对象的学习

java面向对象学习 笔记 视频

未来会更好的博客 124

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

《JAVA面向对象学习总结》

主要讲解了计算机编程语言的发展史,机器语言→汇编语言→高级语言;Java是一门简单的、面向对象的优秀编程语言,它具有跨平台性、可移植性、安全性、健壮性、编译和解释性、高性能和动态性等特点,支持多线程、分布式计算与网络编程等高级特性。1.2面向对象程序设计思想分为两种,一种是面向过程程序设计,一种是面向对象程序设计;面向过程是程序设计的核心是分析出问题的解决步骤,“先干什么后干什么”,然后用函数把这些步骤一个一个实现,最后按照流程调用,而面向对象程序设计的思维方式是一种更符合人们思考习惯的思想。

weixin_59546835的博客 789

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java面向对象程序设计学习总结

在 Java 中,多态主要有两种体现形式,一是方法的重载(Overloading),即在同一个类中,方法名相同但参数列表不同(参数个数、类型、顺序不同),编译器会根据调用时传入的实际参数来确定调用哪个具体的重载方法;二是方法的重写(Overriding),子类重写父类的方法,当通过父类的引用指向子类对象时,调用该重写的方法会执行子类中重写后的逻辑。通过本章的学习,掌握了Java的基本语法、三大基本结构、方法和数组,以及基本的面向过程开发思想,对于一些简单的实战,能分析出其大概逻辑,并使用代码实现。

2301_80659867的博客 946

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java面向对象学习大纲

qq_38331606的博客 582

Java面向对象阶段学习总结

Java面向对象阶段学习总结

m0_71994348的博客 339

Java 面向对象程序的阐述:我的学习理解

面向对象编程,顾名思义,是一种“面向对象”的编程方式。在 面向对象编程 中,程序就是一组对象相互作用的结果,通过对象和对象之间的配合,来完成一系列任务。封装是 面向对象编程的核心之一,它的意义在于保护对象的内部数据,防止外部随意更改。尽管一开始面向对象的思维让我有些不适应,但通过练习,我慢慢学会了如何把问题拆分成一个个对象,如何通过类和对象去设计程序的结构。继承是 面向对象编程的另一个重要特性,它允许我们创建一个新类,这个新类不仅可以拥有自己的属性和行为,还能从已有的类中“继承”那些通用的特性。

2301_77423100的博客 340

Java面向对象学习路线

Java面向对象学习的三条主线: 1、Java类和类的成员:属性、方法、构造器、代码块、内部类 2、面向对象的三个特征:封装性、继承性、多态性/抽象性 3、关键字:this、super、abstract、interface、import、package、static、final 面向对象:程序员从执行者转化成了指挥者。 面向对象分析方法分析问题的思路和步骤: 1、根据问题需要,选...

wudics的专栏 454

Java面向对象学习框架:从基础到实践的完整指南

Java面向对象是Java编程的核心概念之一,掌握好面向对象的基本原理和技术,对于成为一名优秀的Java开发者至关重要。通过本文提供的学习框架,您可以逐步深入学习Java面向对象的各个方面,并通过实践项目来巩固所学知识。同时,也可以进一步拓展学习,深入研究Java面向对象的高级主题,为自己的职业发展打下坚实的基础。

学IT,找陈寒 781

Java学习07:Java面向对象

Java学习07: Java面向对象: 链接:https://pan.baidu.com/s/1gzlBk5OOVI6oEv-WOkHuhQ 提取码:iqov

SH_思寒的博客 499

Java面向对象学习

①定义类名 ②编写类的属性 ③编写类的方法用户自定义类就是一种数据类型对象数组 UserInfo[ ]users = new UserInfo[50];在Java中需要判定一个对象是否为空,和null进行比较;两个静态串可以直接通过==比较,但一个静态一个输入,不可用==比较,使用equals()进行比较;①访问修饰符②返回值类型③方法名④参数列表⑤方法体。

weixin_67887035的博客 943

【Java面向对象程序设计】学习总结

个人理解与心得通过对第6章的学习,我们掌握了Java中常用类的使用方法,包括包装类、字符串处理类、日期时间类、数学类和随机数类等,这些类在日常编程中非常实用,能够帮助我们高效地处理各种数据和操作。

2501_90141283的博客 928
上一篇: debug及练习
下一篇: Java学习——面向对象的三大特征(封装)
中意OOK
博客等级 码龄7年 26粉丝 43原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值