优质网站建设学做吃的网站

张小明 2026/1/9 12:18:31
优质网站建设,学做吃的网站,中国学校网站前台模板,excel网站链接怎么做批量封装 封装是面向对象编程的基本原则#xff0c;封装要求在编写类时#xff0c;对外隐藏内部的数据状态和实现细节#xff0c;仅对外暴露接口#xff0c;用于外部调用访问。 类的封装#xff0c;通常类的属性私有#xff08;用private修饰符#xff09;#xff0c;不对外…封装封装是面向对象编程的基本原则封装要求在编写类时对外隐藏内部的数据状态和实现细节仅对外暴露接口用于外部调用访问。类的封装通常类的属性私有用private修饰符不对外暴露数据和实现细节而是通过get和set方法获取和设置属性。packageoop.classDemo2;publicclassTeacher{// 私有不对外公开访问的实例属性privateStringname;privateintage;// 构造方法(方法重载)publicTeacher(Stringname,intage){this.namename;this.ageage;}publicTeacher(Stringname){this.namename;}publicTeacher(intage){this.ageage;}publicTeacher(){}// 实例方法publicvoidsetName(Stringname){this.namename;}publicStringgetName(){returnthis.name;}publicvoidsetAge(intage){this.ageage;}publicintgetAge(){returnthis.age;}publicvoidsayWhoIam(){System.out.println(我叫this.name今年this.age岁我是一名老师);}}类的使用者不能通过new一个对象用对象.属性设置和获取数据只能通过对象.方法设置和获取数据。TeacherxiaoMingnewTeacher(小明,33);System.out.println(xiaoMing.age);// 错误代码不能通过对象.属性名称 来访问属性System.out.println(xiaoMing.getAge());// 正确代码通过get方法来访问属性为什么要这么做为什么要多此一举编写get和set方法这样做的好处是有利于多人团队协作。类的编写者和调用者可以分开类的调用者不需要关心和了解类的具体属性是什么只需要调用方法调用API实现需要的操作即可。便于维护和更新代码。编写一个类可以使用多种数据结构、不同的数据类型如果属性的访问不是通过封装成方法那更新编写类的数据结构则调用类的代码也需要同步变更。而使用封装的方法则在调用时不需要更新因为类更换数据结构后只需要更新适配新数据结构的get和set方法即可。利于代码的安全性。通过set方法设置变量属性可以做数据校验和特殊处理有利于代码的安全性。**注意封装并不是要求把所有的私有属性通过setter和getter暴露出来因为开放私有属性获取和设置这本身可能就破坏了类的封装性很多时候类不提供setter和getter方法而是直接提供业务相关的方法。publicclassBankAccount{privatedoublebalance;publicBankAccount(){this.balance0;}// 不直接提供setBalance而是提供业务相关的方法publicvoiddeposit(doubleamount){if(amount0){// 判断金额是否合法balanceamount;}}publicbooleanwithdraw(doubleamount){if(amount0balanceamount){balance-amount;returntrue;}returnfalse;}publicdoublegetBalance(){returnbalance;}// 注意没有setBalance方法}继承面向对象的编程是以类来组织和封装代码。当类足够多时我们会对类进行抽象划分为所谓父类和子类比如“动物”这个父类下有“哺乳动物”、“脊椎动物”等子类。从认知上子类和父类一定有一些共同的属性特征否则不可能抽象成一个父类。而子类一定会与父类有些差异或者特殊属性否则页不可能被划分为子类。就像父类“教师”可以划分为“生物教师”、“数学教师”子类。“数学教师”是is a“教师”而“数学教师”又具备“教数学”特殊技能的特殊的“教师”。什么是面向对象编程的继承面向对象编程时子类可继承父类的公开public属性和方法这一特性可以大幅减少代码量提高编程效率。在Java中父类又称为基类子类又称为扩展类、派生类因此使用关键字extends来标记子类。即publicclassSonClassextendsFatherClass{// 子类体}在Java中子类可以继承父类的公开的静态属性公开的静态方法所有的实例属性父类私有的private实例属性无法被直接访问但是可以通过继承公开的public protected实例方法进行调用间接获取父类的私有的实例属性。公开的实例方法需要注意的是子类不继承父类的构造方法而是子类必须通过super()调用父类的构造方法。publicclassApp{publicstaticvoidmain(String[]args){// MathTeacher继承Teacher的公开的静态属性System.out.println(MathTeacher.CLASS_NAME);// 老师// MathTeacher继承Teacher的公开的静态方法MathTeacher.sayHello();// Hello everyone, I am a teacher// MathTeacher继承Teacher的公开的实例属性MathTeacherzhangSannewMathTeacher(张三,32);System.out.println(zhangSan.name);// 张三name为父类的公开的实例属性// MathTeacher继承Teacher的公开的实例方法System.out.println(zhangSan.getAge());// 32age为父类的私有实例属性通过公开的实例方法间接访问}}publicclassTeacher{// 静态属性publicstaticfinalStringCLASS_NAME老师;// 静态方法publicstaticvoidsayHello(){System.out.println(Hello everyone, I am a teacher);}// 实例属性(一般是要封装成私有属性此处为示例继承功能两个属性分别用公开和私有)publicStringname;privateintage;// 构造方法publicTeacher(Stringname,intage){this.namename;this.ageage;}// 实例方法publicintgetAge(){returnage;}}publicclassMathTeacherextendsTeacher{// extends关键字继承父类// 继承了父类的公开的静态属性// 继承了父类的公开的静态方法// 继承了父类的公开的实例属性// 子类需要使用super()调用父类的构造方法publicMathTeacher(Stringname,intage){super(name,age);}// 继承了父类的公开的实例方法}super子类会继承父类的实例属性子类构造方法需要使用super关键词调用父类构造方法初始化继承自父类的实例属性。子类的构造方法会隐式的调用super()。但是如果父类的构造方法是有参构造则子类必须显性的编写super()方法进行调用。如果显性编写super()比如// 父类publicclassTeacher{privateStringname;privateintage;publicTeacher(){System.out.println(父类初始化了);}}// 子类publicclassMathTeacherextendsTeacher{publicMathTeacher(){System.out.println(子类初始化了);}}// 子类初始化publicclassApp{publicstaticvoidmain(String[]args){MathTeacherzhangSannewMathTeacher();}}父类初始化了 子类初始化了 进程已结束退出代码为0初始化子类时会调用子类的构造方法。而在子类的构造方法内部会隐式的调用super()即调用父类的构造方法。因此才会运行System.out.println(“父类初始化了”)。需要注意 super()必须是子类构造方法的第一个语句。方法重写子类会继承父类公开的实例方法但是很多情况下父类的方法可能并不是子类需要的或者子类需要的实例方法运行逻辑与父类不同。这种情况下就可以在子类重新定义与父类方法相同名称的实例方法在实例调用时会去运行子类定义的方法。这种情况叫方法的重写。子类重写的方法可添加override注解非必须可以帮助编译器检查方法重写是否正确。需要注意方法重写指的是实例方法的重写静态方法不存在重写。也就是父类和子类都存在相同的静态方法此类情况并非方法的重写。方法的重写要求子类和父类方法的方法名、方法参数和范围值都相同否则系统不会认定是方法的重写。访问修饰符不能比父类更严格。宽松程度public protected default private抛出异常不能抛出比父类方法更宽泛的检查异常Object类Java是用类来组织代码java中所有的类都隐式的继承自一个Object类继承Object类的方法比如使用hashcode、toString等方法。多态多态是指同一个方法在不同的对象上调用会产生不同的效果。多态是方法的多态跟属性没有半毛钱关系。面向对象的多态特性表现在方法重载和方法重写。方法重载的多态编译时多态/静态多态方法重载是指在java的同一个类中可以定义多个具有相同方法名的方法只需要满足返回类型、方法参数参数数量、参数类型、参数顺序不同。在方法被调用时系统会根据形参自动选择对应的方法在编译阶段编译器会根据形参绑定选用的方法是静态绑定。比如// 方法重载示例同一个类中方法名相同参数列表不同classCalculator{// 加法方法的不同形式publicintadd(inta,intb){returnab;}publicdoubleadd(doublea,doubleb){returnab;}publicintadd(inta,intb,intc){returnabc;}}publicclassOverloadExample{publicstaticvoidmain(String[]args){CalculatorcalcnewCalculator();// 编译器根据参数类型和数量决定调用哪个方法System.out.println(两个整数相加: calc.add(5,10));// 调用 add(int, int)System.out.println(两个小数相加: calc.add(5.5,10.5));// 调用 add(double, double)System.out.println(三个整数相加: calc.add(5,10,15));// 调用 add(int, int, int)}}方法重写的多态运行时多态/动态多态方法重写是发生在子类继承父类的场景里。方法重写就是子类继承父类方法时对相同的方法的代码逻辑进行重新编写。当父类引用指向子类对象时系统会动态的根据子类对象调用子类对象的方法在编译阶段编译器会检查父类是否有需要调用的方法而在运行阶段系统会根据子类对象调用不同的方法因此是动态绑定。// 父类classAnimal{publicvoidmakeSound(){System.out.println(动物发出声音);}}// 子类1classDogextendsAnimal{// 方法重写OverridepublicvoidmakeSound(){System.out.println(汪汪汪);}// 子类1狗特有的方法publicvoidwagTail(){System.out.println(狗摇尾巴);}}// 子类2classCatextendsAnimal{// 方法重写OverridepublicvoidmakeSound(){System.out.println(喵喵喵);}}// 子类3classBirdextendsAnimal{// 方法重写OverridepublicvoidmakeSound(){System.out.println(叽叽喳喳);}}publicclassPolymorphismExample{publicstaticvoidmain(String[]args){// 运行时多态父类引用指向子类对象AnimalmyAnimal;myAnimalnewDog();// Animal引用指向Dog对象myAnimal.makeSound();// 输出汪汪汪myAnimalnewCat();// Animal引用指向Cat对象myAnimal.makeSound();// 输出喵喵喵myAnimalnewBird();// Animal引用指向Bird对象myAnimal.makeSound();// 输出叽叽喳喳// 示例多态在数组中的应用Animal[]animalsnewAnimal[3];animals[0]newDog();animals[1]newCat();animals[2]newBird();System.out.println(\n动物合唱:);for(Animalanimal:animals){animal.makeSound();// 同一方法调用不同行为}}}方法重写是实例方法的重写静态方法没有重写。静态方法可以被子类“隐藏”hide而不是重写。调用哪个版本取决于引用类型而不是对象类型。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做的好的大学生旅行有哪些网站好百度公司可以建设网站

Dify镜像适用于哪些典型AI应用场景? 在大模型技术席卷各行各业的今天,越来越多企业希望将AI能力嵌入自身业务流程——从客服问答到内容生成,从知识管理到自动化办公。但现实是,直接基于LLM API开发应用往往面临环境配置复杂、调试…

张小明 2026/1/8 8:05:19 网站建设

建筑公司网站源码时间线 wordpress

3D球体抽奖应用:Vue3技术打造专业年会抽奖系统 【免费下载链接】log-lottery 🎈🎈🎈🎈年会抽奖程序,threejsvue3 3D球体动态抽奖应用。 项目地址: https://gitcode.com/gh_mirrors/lo/log-lottery 想…

张小明 2026/1/9 1:34:24 网站建设

平安建设网站怎么帮别人做网站

1. 为什么这个毕设项目值得你 pick ? 墓地文化建设智慧管理系统专为陵园管理打造,其主要功能模块包括陵园、区域、墓区和墓位的精细化管理和维护。系统采用SpringMVC开发框架,并结合MySQL数据库实现高效的数据处理与存储。通过全面的功能覆盖如预约、销…

张小明 2026/1/9 2:57:32 网站建设

青岛建站费用网站建设网络推广公司有哪些

Fun-ASR与MyBatisPlus整合?不,是语音后端联动 在企业级智能语音应用日益普及的今天,一个常见的需求浮现出来:如何让高精度的语音识别能力不仅“能听清”,还能“记得住”、“查得到”?尤其是在金融会议记录、…

张小明 2026/1/9 10:29:00 网站建设

网站官方认证怎么做福建建设部网站

脚本编程中的参数处理、循环控制与数据操作 在脚本编程中,我们常常需要处理各种参数、进行循环操作以及对字符串和数字进行处理。下面将详细介绍这些方面的知识和应用。 位置参数的批量处理 在处理位置参数时,有几种不同的方式。例如, $* 和 $@ 在某些情况下会产生不…

张小明 2026/1/7 0:51:37 网站建设

做贸易要看什么网站好的网站模板

SQL Server 技术全解析:从基础到未来展望 1. 性能能力 性能是 SQL Server 的核心关注点之一,涉及多个方面的优化和配置。 1.1 加速性能 列存储索引 :具备批量模式执行、数据压缩和数据消除等优点,能显著提升性能。可使用 fact_sales_all.sql 、 fact_sales_count.s…

张小明 2026/1/7 0:51:39 网站建设