javaSE探赜索隐之三--<类与对象的爱恨情仇下>
封装
封装就是将类的某些信息隐藏在类的内部,不允许外部直接访问。而是通过该类提供的方法对隐藏的信息进行访问。
public class Person {//隐藏类的信息,这样外部就不能访问private String name;private int age;//可以向外部提供专门的方法,来对类中私有的属性访问public void setName(String name){if(name!=null){//this表示当前正在访问的对象this.name = name;}}public String getName(){return this.name;}public void setAge(int age){this.age=age;}public int getAge(){this.test();return this.age;}
而其他类只能通过给定的方法访问。
public class Test {public static void main(String[] args) {//Person p=new Person("jim",10);Person p=new Person();p.setName("张三");p.setAge(10);System.out.println(p.getAge());System.out.println(p.getName());} }
补充:
- this关键字表示当前类的对象的属性、方法。(this必须放在非静态方法中,因为静态的方法和属性属于类,不属于对象。)
- 一般封装给定方法的快捷方式:鼠标右击–>Generate–>Getter and Setter
继承
继承的相关概念
继承就是在已有类的基础上派生出新类的过程,新类可以拥有父类的非私有属性、方法,从而提高代码的重用性、扩展性(方法的重写)。
能继承的两个类之间大都属于(A是B[a is b])这样的关系。比如,猫是一个动物,也就是说猫类继承了动物类。
被继承的类是父类(基类),继承过的类是子类(派生类),子类通过(extend关键字+父类名)将父类继承过来。
java中只支持单继承,即一个类只能有一个直接父类。但是类的继承具有传递性,也就是说类可以间接被继承。(举个例子,Java中Object类是所有类的父类,所有的类都直接)
继承的相关过程
在继承后创建子类对象的时候,会优先调用父类的无参构造方法,创建父类对象。通过“super()”关键字调用父类构造方法,(默认为无参构造方法),如果写出来要写在第一行。
当父类的方法不能满足子类的需求时,可重写父类中的方法。
重写规则:- 方法名相同、参数列表相同、返回值类型相同、访问权限相同
//父类 public class Animal{private String name;private int age;public void eat(){System.out.println("动物正吃");}public void setName(String name){this.name = name;}public String getName(){return this.name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;} } //子类 public class Dog extends Animal{private String type;@Overridepublic void eat() {System.out.println("狗吃。");}public void study(){System.out.println("狗正学习");}public String getType() {return type;}public void setType(String type) {this.type = type;} } //测试类 public class TestExtends {public static void main(String[] args) {Dog dog = new Dog();dog.setName("拉拉");dog.setType("狼犬");System.out.println(dog.getName());System.out.println(dog.getType());dog.eat();dog.study();} }
补充:@override是重写的意思,快捷键:Ctrl+o
多态
类与类的关系
关联
关联就是对象与对象(类与类)之间的连接,java中关联关系表现为一个类作为另一个类的属性存在。比如人拥有车。人和车是不同的类,他们的对象之间存在对应关系。基本满足( A has B)- 关联关系分为:一对一关联、一对多关联(集合、数组);单向关联、双向关联。
依赖
依赖即一个类使用另一个类作为参数 。
依赖关系是临时的,方法完成后,变量立即被销毁 。
多态
多态就是同一种事物在不同的时刻,所表现出的不同状态。
多态的条件:
- 继承(包括接口的实现)。
- 必须有重写的方法(往往会在父类中定义一些抽象的方法,即没有方法体的方法)
- 父类的引用指向子类的对象。
多态下成员方法的调用
编译看左边,运行看右边。
Animal dog = new Dog();
编译运行都看左边(针对静态方法)
补充:
向上转型
向上转型与默认转换相似,提高了程序的扩展性。
Animal animal = new Dog();
问题:父类类型变量无法调用子类特有的方法。因此出现了向下转型。
向下转型
Dog dog = (Dog)animal; //往往在向下转型钱需要先判断 “dog” 是不是 “animal”类型的对象。 //否则会出现 Dog dog = (Dog) object (实际上Dog和Object并无关系)
javaSE探赜索隐之三--<类与对象的爱恨情仇下>相关推荐
- javaSE探赜索隐之三<类与对象的爱恨情仇上>
文章目录 面向对象思想 面向对象 面向过程 类 面向对象思想 面向对象 面向对象适合处理复杂的事情,先使用对象对整体关系作出分类,然后根据不同类进行细节处理. 面向对象关注于从宏观上把握事物之间的关系 ...
- javaSE探赜索隐之三<类与对象的爱恨情仇中>
文章目录 引用和对象 值传递和引用传递 static关键字 引用和对象 引用,顾名思义,就是借用.调用的意思.引用类型的变量系统也会在栈里面开辟一定的存储空间,与8种基本类型不同的是,引用类型的变量里 ...
- 前端后端的爱恨情仇--续集
文章目录 前端妹子给我打电话了 Eolink 直呼真香 1. DTDD:文档与测试驱动开发 2. API研发测试天花板 3. 超强的Mock API 4. 隐秘又好用的小亮点 5 . 针对开发者比较友 ...
- 点、线、圆、矩形、抛物线的类定义_点、圆、球和n维球体积之间有怎样的爱恨情仇?让我们一起扒开他们之间鲜为人知,惊为天人的秘密关系!...
吃瓜群众们,请拿好你们的小板凳,错开坐好,不要挡住后面人的视线,不要把西瓜仔西瓜皮乱吐乱丢.我们要开始了. 恩,让我想想,从何说起. 一个点 如左边所示.试想一下,这个点在纸上变大变大变大,就成了圆. ...
- 深度解析单例与序列化之间的爱恨情仇
转载自 深度解析单例与序列化之间的爱恨情仇 本文将通过实例+阅读Java源码的方式介绍序列化是如何破坏单例模式的,以及如何避免序列化对单例的破坏. 单例模式,是设计模式中最简单的一种.通过单例模式可以 ...
- 深入Java虚拟机之 --- JVM的爱恨情仇
(本文参考深入理解JAVA虚拟机第二版第2章) 系列文章: 深入Java虚拟机之 - JVM的爱恨情仇 JAVA 垃圾回收机制(一) - 对象回收与算法初识 JAVA 垃圾回收机制(二) - GC回收 ...
- Spring发展史! 和那些巨头的爱恨情仇!
** 码农的春天----------Spring来了 关于Spring的发展起源要回溯到2002年,当时正是Java EE和EJB大行其道的时候,很多知名公司都是采用此技术方案进行项目开发.这时候有一 ...
- 那些大学简称背后的“爱恨情仇”:东西南北中,就剩北大没人抢了
春节期间,免不了要被亲戚问在哪读大学? >>>> 我:华中大啦 亲戚:?有这大学 我:华中科技大学 亲戚:奥~华科啊,华科就华科,华中大是啥啊 我:委屈啊,学校官方简称是华中大 ...
- 除了love和hate,还能怎么表达那些年的“爱恨情仇”?
实用英语 帮你全面提高英语水平 关注 童鞋们每次刷美剧的时候,相信都会被CP感满满的男女主角虐得体无完肤吧. 可是,一到我们自己表达爱意或者恨意的时候,却苦于词穷,只会用love, like, hat ...
最新文章
- 数据结构——算法之(010)( 字符串的左旋转操作)
- SNMP在windows linux router上的配置笔记
- laravel 框架中使用数据库迁移添加注释
- 操作ROS松灵机器人步骤及遇到的问题
- react结合redux的开发步骤
- 【Python】交互式界面创建函数
- 数据在内存中的存储(二进制形式存储)
- ppt中的流程图怎么整体移动_PPT中图片太丑了?该怎么办?
- PLC基本指令系统优势
- WIN7 64位 VS2013下载
- ensp官方停止下载
- PowerApps中应用如何显示用户详细信息
- appcan与java_APPCAN学习笔记004---AppCan与Hybrid,appcan概述
- 百度网盘等相关百度产品账号不存在问题
- 使用 Microsoft Symbol Server 获取调试符号文件
- 面向对象和面向过程有什么区别
- 携程网被黑,谁干的??
- ecshop小京东短信接口插件修改-v41,42,43,50+图片说明
- 【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
- 网购平台比价系统的实现
热门文章
- Windows下Zookeeper启动zkServer.cmd报错闪退,找不到zoo.cfg文件
- Android 13 Camera ITS 环境搭建(从Python安装到环境配置详解)
- 扫除知识共享障碍,天翎知识文档管理系统+群晖NAS一体化解决方案
- 两代 Windows 性能大比拼!Win8 完胜 Win7
- NT Server无盘站配置技术详解
- 最新码支付源码+完整版+免挂监听回调+微信、支付宝、qq监控APP打包教程
- 如何安装计算机刻录程序,详解怎么用电脑刻录光盘
- 520表白网站(附源码与修改教程)
- [翻译] 数学翻译词汇
- 对郭天祥老师的一些知识点的解读