11.面向对象概述,类的创建,对象的创建

news2024/11/16 8:24:45

一.面向对象程序设计概述

1.知识点面向对象程序设计的目的

(1)从程序设计的角度来看,事物的属性就可以用变量来表示,行为则可以用方法来反映。

(2)客观世界中事物的属性和行为可以进行传递,当某一个事物得到另一个事物传给它的属性和行为,我们就说该事物实现了继承。

(3)继承不同于复制,实现了继承的事物可以添加上自己的属性和行为,从而实现对已有事物的功能扩充。

(4)面向对象的程序设计方法将客观事物进行抽象,并且通过继承等技术实现软件的可扩充性和可重用性。

2.知识点类和对象

类是一种特殊属性类型

对象是类的实例。

类是对象的抽象

学生(类)和每个学生(对象)

3.知识点java面向对象设计的核心设计

(1)面向对象程序设计的核心技术是封装,继承和多态性。

(2)类是封装的基本单元。通过封装可以隐藏类的实现细节,也可以避免对类中属性的直接操作。可以通过类的公共接口访问类中的变量,而不必知道这个接口(公共方法)是如何实现的。只要这个方法的名字和参数不变,即使类中的变量被重新定义或方法的代码被修改,对类中变量的访问也不会受到影响。

(3)例如,你要在计算机上安装一块声卡,你不必知道声卡的内部结构,也不必知道声卡的功能是如何实现的,因为实现声卡功能的集成电路都被封装了。你只要知道声卡应该安装在你的计算机主板的什么位置,其他设备如音箱、光驱怎样与声卡连接就可以了。

(4)继承是对类的功能的重用和扩充。通过对某一个类的继承产生一个新类(子类),子类既有从某个类(超类)中继承下来的功能,又可以定义自己的变量和方法,产生新的功能。

(5)多态性是指方法的名字相同,但实现不同。即“一个接口,多个方法”。如有三个方法,分别用来计算圆、矩形和三角形的面积,它们都可以叫 area。

4.知识点java面向对象技术

Java是一种完全面向对象的程序设计语言,它所有的属性类型和方法都封装在类中。Java继承了C++的优点,但放弃了那些含糊、复杂和容易出错的特性。Java 所实现的面向对象的特性,降低了程序的复杂性,实现了代码的可重用性,提高了运行效率。

二.类的创建

1.代码(日期类,输出今天,明天日期,判断是否是闰年)

package 第四章;

public class 日期判断422 {//函数的公共类

     int year,month,day;//定义整个函数体会用到的变量,类变量

    //因为他们变量作用的方位是整个类,所以类变量的声明位置应该在所有方法(包括main()方法)的外面,是类变量

public void setdate(int y,int m,int d) {//用来设置输入日期,成员方法

    //格式:  <方法修饰符(访问控制符protected,public和类型修饰符static,final,abstract,native> 类型 方法名(参数)

    year=y;

    month=m;

    day=d;

}

boolean isleap(int y) {//用来判断是否是闰年

    return(y%4==0&&y%100!=0||y%400==0);//返回值

}

public void today() {//用来输出今天的日期

System.out.println("The day of today is "+year+"/"+month+"/"+day);

}

public void tomorrow() {//用来输出明天的日期

    int y,m,d;

    d=day+1;m=month;y=year;

    //判断是二月以及是否是闰年

    if((d>28)&&month==2) {

    if(!isleap(year)||d>29)

    d=1; m=m+1;

    }

    //判断是否是其他月份的30

    else if(d>30&&(month<7&&month%2==0||month>7&&month%2==1)) {

    d=1;m=m+1;

    }

    //判断是否是31号,以及是否是12月份的31

    else if(d>31) {

        d=1;m=m+1;

        if(m==13) {

           m=1;y=y+1;

    }

    }

    //执行总部分

    System.out.println("The date of tomorrow is "+y+"/"+m+"/"+d); 

}

public static void main(String args[]) {

    日期判断422 de=new 日期判断422();

    de.setdate(2000,2,29);//设置日期

    de.isleap(de.year);

    System.out.println(de.year+" is a leap year");

    de.today();

    de.tomorrow();

}

}

2.知识点

【1】类的声明格式

【2】成员变量

【3】成员方法

三.对象的创建和使用

1.代码(日期类,输出今天,明天日期,判断是否是闰年增加了自己创建的构造方法的类)

package 第四章;

public class Date2 {

     int year,month,day;//定义整个函数体会用到的变量,类变量

        //因为他们变量作用的方位是整个类,所以类变量的声明位置应该在所有方法(包括main()方法)的外面,是类变量

    Date2(int y,int m,int d){//创建构造方法

        year=y;

        month=m;

        day=d;

        //定义与赋值

    }

    Date2(){//默认构造方法

    }

    public void setdate(int y,int m,int d) {//用来设置输入日期,成员方法

        //格式:  <方法修饰符(访问控制符protected,public和类型修饰符static,final,abstract,native> 类型 方法名(参数)

        year=y;

        month=m;

        day=d;

        //定义与赋值

    }

    boolean isleap(int y) {//用来判断是否是闰年

        return(y%4==0&&y%100!=0||y%400==0);//有返回值

    }

    public void today() {//用来输出今天的日期

    System.out.println("The day of today is "+year+"/"+month+"/"+day);

    }

    public void tomorrow() {//用来输出明天的日期

        int y,m,d;

        d=day+1;m=month;y=year;

        //判断是二月以及是否是闰年

        if((d>28)&&month==2) {

        if(!isleap(year)||d>29)

        d=1; m=m+1;

        }

        //判断是否是其他月份的30

        else if(d>30&&(month<7&&month%2==0||month>7&&month%2==1)) {

        d=1;m=m+1;

        }

        //判断是否是31号,以及是否是12月份的31

        else if(d>31) {

           d=1;m=m+1;

           if(m==13) {

               m=1;y=y+1;

        }

        }

        //执行总部分

        System.out.println("The date of tomorrow is "+y+"/"+m+"/"+d); 

    }

    public static void main(String args[]) {

        Date2 de1,de2;//创建对象,声明对象

        de1=new Date2(1999,3,31);//实例化对象

        de2=new Date2();

        System.out.println("The first object:");//输出,de1的应用

        if(de1.isleap(de1.year))//调用isleap方法判断是否是闰年

           System.out.println(de1.year+"is a leap year");//判断是闰年后输出,调用变量,成员变量的引用

        de1.today();//成员方法的引用

        de1.tomorrow();

        System.out.println("The second object:");//输出此行,de2的应用,无参数需要赋值

        de2.setdate(2000,2,29);//利用此方法设置日期

        if(de2.isleap(de2.year))

        System.out.println(de2.year+" is a leap year");

        de2.today();

        de2.tomorrow();

    }

}

对比 如果此时删除Date2()方法,相当于少了一个方法

对比(报错)(没有Date(int y,int m,int d)后报错)

2.知识点

【1】创建对象

【2】构造方法和对象的初始化

类对象不能直接调用方法,除非方法声明为static

构造函数是类中的特殊方法

构造方法无返回值,只用new运算符调用,用户不能直接调用

【3】对象的使用

【4】对象的销毁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/442674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汇编与内联 x86-64

机器字长 x86是32位系统 64是64位系统 这里的32和64&#xff0c;指的都是机器字长 机器字长是 能直接进行整数/位运算的大小指针的大小(索引内存的范围) 8位机 由于空间大小限制&#xff0c;想要把集成电路做到个人主机里&#xff0c;只能用8位字长的 16位机 8086 IBMP…

如何破除增长的未知性?火山引擎交出了答卷

4月18日&#xff0c;由火山引擎主办的2023春季火山引擎“FORCE原动力”大会在上海召开。本次大会主要围绕云计算和数字化领域&#xff0c;全方位地展示火山引擎在云技术、云服务和云场景方面的最新探索、应用与实践&#xff0c;呈现创新发展的战略蓝图。 曾经&#xff0c;增长是…

Flink高手之路5-Table API SQL

文章目录 Flink 中的Table API & SQL一、Table API & SQL 介绍1. 为什么要Table API和SQL2. Table API & SQL的特点3. Table API& SQL发展历程3.1 架构升级3.2 查询处理器的选择3.3 了解-Blink planner和Flink Planner具体区别如下&#xff1a;3.4 了解-Blink …

神采PromeAI 2.0版本上线,助你释放创作超能力

上个月&#xff0c;我们推出神采PromeAI 1.0版本&#xff0c;让用户可以免费体验AI草图渲染功能。神采作为设计师的提效工具和灵感源泉&#xff0c;深受用户的广大好评。于是&#xff0c;在经过算法优化后&#xff0c;神采PromeAI 2.0版本终于在本周上线了&#xff01; 我们提供…

【Vulnhub】之Symfonos2

一、 部署方法 在官网上下载靶机ova环境&#xff1a;https://download.vulnhub.com/symfonos/symfonos2.7z使用VMware搭建靶机环境攻击机使用VMware上搭建的kali靶机和攻击机之间使用NAT模式&#xff0c;保证靶机和攻击机放置于同一网段中。 二、 靶机下载安装 靶机下载与安…

ETCD(四)读请求处理过程

客户端通过etcdctl执行get命令 etcdctl get name --endpoints localhost:12379,192.158.00.32:12379client端 首先是client会解析这条命令&#xff0c;包括其中的get API方法&#xff0c;key值&#xff0c;请求server地址。解析完之后etcdctl会创建一个clientv3库对象&#xf…

Ubantu docker学习笔记(七)容器网络

文章目录 一、容器网络管理1.1查看容器网络1.2创建容器网络1.3 删除容器网络1.4 容器网络详细信息1.5 配置容器网络1.6 断开容器网络连接 二、none网络三、host网络四、bridge网络五、container网络六、容器连接外部网络6.1创建Overlay网络6.2创建Macvlan网络 一、容器网络管理…

研0进阶式学习---数据库配置

目录 最开始的问题&#xff1a;不同的连接名下面的数据库信息完全一样尝试新建用户名和密码&#xff0c;以此来建立新的连接 但这样建立的连接下面的数据库仍然是和之前的一模一样尝试改变xampp端口号&#xff0c;以此来建立新的连接 结论MySQL实例的数据库文件是与实例绑定的&…

完美解决丨+# TypeError: ‘dict_keys‘ object does not support indexing

结构 - 标题 - 问题描述 - 代码栗子 - 总结 目录 TypeError: dict_keys object does not support indexing 如何实现&#xff1f; python a {a: 1} b a.keys() c b[0] 异常描述 TypeError Traceback (most recent call last) <ipython-input-9-9dceb06f3f…

信号完整性分析基本概念之Retimer和Redriver

一两句话讲清楚版&#xff1a; Retimer 通过 其 Rx 端 CTLE/DFE (连续时间线性均衡/判断反馈均衡) 、CDR (时钟数据恢复) 及 Tx 端 EQ (均衡)&#xff0c;来够补偿信道损耗&#xff0c;消除信号抖动&#xff0c;提升信号完整性&#xff0c;从而增加传输距离。 Redriver 是放大…

多线程拉取+kafka推送

多线程拉取kafka推送 1 多线程 在本次需求中&#xff0c;多线程部分我主要考虑了一个点&#xff0c;就是线程池的配置如何最优。因为数据量级比较大&#xff0c;所以这个点要着重处理&#xff0c;否则拉取的时间会非常长或者是任务失败会比较频繁&#xff1b; 因为数据的量级…

Spring Security OAuth2.0(一)-----前言-授权码模式及代码实例

什么是 OAuth2 OAuth 是一个开放标准&#xff0c;该标准允许用户让第三方应用访问该用户在某一网站上存储的私密资源&#xff08;如头像、照片、视频等&#xff09;&#xff0c;而在这个过程中无需将用户名和密码提供给第三方应用。实现这一功能是通过提供一个令牌&#xff08…

如何治理“网络暴力” 在人类文明不断发展向前的进程中,大数据时代应运而来。数学建模解题步骤,愚见而已,欢迎指错和探讨呀~

题目可见文章&#xff1a;(20条消息) 如何治理“网络暴力” 在人类文明不断发展向前的进程中&#xff0c;大数据时代应运而来。 数学建模&#xff0c;90%成品论文&#xff0c;附附件、原题、代码 注&#xff0c;水平有限&#xff0c;非广告&#xff0c;仅供交流参考&#xff0c…

6、ThingsBoard使用jar包自己构建镜像部署

1、概述 这一节主要讲解你自己使用jar包构建镜像,一般在很多企业中,都是使用Jenkins配置流水线,自动打包,然后拷贝程序在target目录下生成的jar包,然后使用Dockerfile文件进行构建镜像,其实我这一节讲的也是类似,只是不使用Jenkins来实现自动,原理都一样,估计也是很多…

C++ MySQL存储二进制数据、存储照片

版权声明&#xff1a;本文为CSDN博主「intfre」的原创文章&#xff0c;遵循CC 4.0 BY-SA版权协议&#xff0c;转载请附上原文出处链接及本声明。 原文链接&#xff1a;https://blog.csdn.net/nibiru_holmes/article/details/51387047 0x01 首先MySQL支持二进制的类型有Blob: …

Doris-1.2.0升级到Doris-1.2.4

0 背景 在使用doris-1.2.0版本时发现BE节点无故宕机&#xff0c;自己尝试解决无果后再官网寻找解决方案&#xff0c;发现在doris-1.2.0版本中存在这样的隐患bug导致BE节点宕机。 而在咨询社区之后建议对doris进行升级&#xff0c;升级版本doris-1.2.4。该版本是解决1.2.x问题…

Springboot集成neo4j实现知识图谱关系图

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、neo4j是什么&#xff1f;二、安装步骤1.启动2.使用2.简单命令 二、使用springboot集成neo4j1.引入依赖2.功能实现3.查询关系节点4. 查询指定评委和指定选手…

基于matlab使用光线追踪自定义 CDL 通道模型

一、前言 此示例演示如何使用光线追踪分析的输出自定义 CDL 通道模型参数。该示例演示如何&#xff1a; 指定发射器和接收器在 3D 环境中的位置。 使用光线追踪来计算通道的几何方面&#xff1a;光线数量、角度、延迟和衰减。 使用光线追踪分析的结果配置 CDL 通道模型。 使用相…

KDYZ-YM晶闸管伏安特性测试仪

一、概述 晶闸管的伏安特性是晶闸管的基本特性&#xff0c;这项特性的好坏&#xff0c;直接影响到器件在整机上的正常使用。因此&#xff0c;检测晶闸管的伏安特性在晶闸管器件的生产、经销及使用过程中都是十分重要的。 测试方法符合国标JB/T7624-94《整流二极管测试方法》和J…

深入理解Go语言中的函数【单元测试】14

文章目录 go test工具测试函数测试函数的格式测试函数示例 测试组子测试测试覆盖率基准测试基准测试函数格式基准测试示例性能比较函数重置时间并行测试 Setup与TearDownTestMain子测试的Setup与Teardown 示例函数示例函数示例 go test工具 Go语言中的测试依赖go test命令。编…