JAVA面向对象特征详解
封装性的产生目的:保护某些属性和方法不被外部所看见。
封装的实现:为属性和方法进行封装是通过关键字private声明的;实现该属性的set和get方法,为外部所访问
类,封装了数据和方法;方法,封装了实现的过程,接口是参数和返回值;
1)get/set 方法;对某一个属性只提供get不提供set方法,就是只读的,在类的外部不能修改;
2)提供统一的参数检查,在set上给与检查,判断合法性和安全性;
将属性都私有,并且提供set/get 方法,做成了通用的组件,叫JavaBean;
extends: 继承,实际上是对父类的扩展;
1)分配对象空间;
2)给属性赋初值;boolean:false;数值类型:0或0.0; 对象类型:null;
3)调用构造方法;
定理:JVM:上帝;构造学生,先构造一个人;
1)任何子类的构造方法都会调用父类的构造方法;
2)任何类都有构造方法,如果程序员自己不定义则系统会加上一个默认的无参空实现的构造方法;如果定义了,则系统不会加;
3)任何子类的构造方法的第一行一定是super(…)或this(…);如果程序员不这么写,则系统会默认加上super();
自己写this()就不会加super();但this()调用的构造方法一定 会调用父类的构造方法;
This(…); //表示调用本类的其它构造方法,只能出现在构造法的第一行;其它位置都是不合法的;
public Animal(String name,int age,int legs){
//super();//编译器会自动添加一个super();
this.name=name;
this.age=age;
this.legs=legs;
}
public Animal(String name,int age){
// this.name=name;
// this.age=age;
// this.legs=4;
this(name,age,4);//调用本类的其它构造方法;只能出现在构造方法的第一个有效行;系统不会在这里加一个super();
//但是this(name,age,4);会调用3个参数的构造方法,这个构造方法会默认调用父类的构造方法;
}
Super(…);//调用父类的构造方法,也是只能出现在构造方法的第一行;根据参数类型来确定调用父类的哪个构造方法;
Super();//默认调用父类的无参的构造方法;
即使把父类的私有属性继承下来了,但是还是不能直接访问,必须用getName();
如果在子类中定义一个和父类相同的属性name,那么在子类中用 super.getName()来和子类的name 区分;
总结:
Super.xxx ;//在子类中有和父类同名的属性时;
this.xxx //方法中有局部变量和成员变量命名冲突
Super(xxx);//调用父类的构造方法,只能出现在构造方法的第一行;
this(xxx);//调用本类的其它构造方法,也是只能出现在构造方法的第一行,不能和this同时出现;
如果在子类中定义和父类同名的属性是不推荐的,一般不要这么写;也没有意义;也不符合规范的;
方法是经常覆盖的;
方法的覆盖:
1)发生在父子类中;
2)同名、同参、同返回值
3)访问权限跟父类相同或更宽;不能比父类更封闭;
4)子类方法抛出异常的类型不能比父类方法更宽泛;
Move()//父类; move(int)//子类; 不叫覆盖,也可以叫重载;
多态有方法的多态和对象的多态(一个对象多种形态)。
体现在代码上就是Animal a=new Bird(....);
1.可以把子类对象当作父类对象来看,一旦这样做了,就只能去调用父类中原有定义的属性和方法,也就是子类中扩展的方法或属性就不能调用了。
2.当我们把子类对象当作父类对象来看的时候,如果子类覆盖了父类中的方法,在调用的时候实际调用的是子类覆盖后的方法。
Animal a=new Bird();前面的引用a的类型叫做编译时类型(主观认为),
后面的bird 类型叫做运行时类型(客观存在)。
强制类型转换的前提是你的运行时类型本来就是你要强制转换成的类型。
要想知道某个对象是否是某一个类的实例: instanceof,他的左边是个对象名,右边是类名或者是接口名,如果这个对象是右边的类的实例,返回真,否则返回假。 这个方法会做自动类型兼容。
Bird d=new Bird();
JAVA面向对象特征详解的更多相关文章
- Java 反射机制详解(下)
续:Java 反射机制详解(上) 三.怎么使用反射 想要使用反射机制,就必须要先获取到该类的字节码文件对象(.class),通过字节码文件对象,就能够通过该类中的方法获取到我们想要的所有信息(方法,属 ...
- 云时代架构阅读笔记六——Java内存模型详解(二)
承接上文:云时代架构阅读笔记五——Java内存模型详解(一) 原子性.可见性.有序性 Java内存模型围绕着并发过程中如何处理原子性.可见性和有序性这三个特征来建立的,来逐个看一下: 1.原子性(At ...
- JAVA对象头详解(含32位虚拟机与64位虚拟机)
为什么要学习Java对象头 学习Java对象头主要是为了解synchronized底层原理,synchronized锁升级过程,Java并发编程等. JAVA对象头 由于Java面向对象的思想,在JV ...
- java封装基础详解
java封装基础详解 java的封装性即是信息隐藏,把对象的属性和行为结合成一个相同的独立单体,并尽可能地隐藏对象的内部细节. 封装的特性是对属性来讲的. 封装的目标就是要实现软件部件的"高 ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Java 序列化Serializable详解
Java 序列化Serializable详解(附详细例子) Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连 ...
- Java String类详解
Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...
- 最新java数组的详解
java中HashMap详解 http://alex09.iteye.com/blog/539545 总结: 1.就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java ...
- JAVA IO 类库详解
JAVA IO类库详解 一.InputStream类 1.表示字节输入流的所有类的超类,是一个抽象类. 2.类的方法 方法 参数 功能详述 InputStream 构造方法 available 如果用 ...
随机推荐
- 编写Java程序,使用JDBC连接SQL Server数据库
返回本章节 返回作业目录 需求说明: 使用JDBC连接SQL Server数据库 SQL Server数据库位于192.168.2.101. 所需连接的数据库为eshop_db,用户名为test,密码 ...
- UTF-8,GBK,ANSI之间的关系和区别
GBK应该是属于ANSI之中的,在ANSI的国际通用集,GBK是专门来解决中文编码的,是双字节的,不论中英文都是双字节,而UTF-8是才用的另外的一种编码方式,对英文是用8位,对中文使用24位,是和A ...
- vue3 父菜单渲染出来了,但是子菜单渲染不出来的原因
子菜单始终渲染不出来,控制台出现警告如下: 在查看框架源码时,发现在渲染时应用了递归.在这个博客找到答案,原因是升级的vue的版本没有升级@vue/compiler-sfc的版本,这两个版本应该保持一 ...
- Flask_Flask-Script脚本扩展的使用(八)
Flask-Script扩展包提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行 ...
- Echart可视化学习(七)
文档的源代码地址,需要的下载就可以了(访问密码:7567) https://url56.ctfile.com/f/34653256-527823386-04154f 正文: 官网找到类似实例, 适当分 ...
- 简单的Dos 命令
1.1.如何操作DOS命令 开始---运行---输入cmd--回车 或者 Win + R ---运行---输入cmd--回车 1.2.基本命令 1. 命令:color f0 帮助:color ? 作用 ...
- [流畅的Python]第一章数据模型
这些来自同一家出版社的动物书 像是计算机科学界一盏盏指路明灯 余幼时 初试读 学浅 以为之晦涩难懂 像是老学究咬文嚼字 现在看起来还有些有趣 其实理工男大多都很有趣 这一章介绍了 怎么样去视线一个带有 ...
- Easticsearch概述(API使用)二
Rest简介 一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务端互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制 Rest的操作分为以 ...
- MINItest软件架构总结
MINItest软件架构总结 ----helloWen MINItest软件架构总结1. Problem Description2. Analysis3. Solution3.1. 通过读取设备信息来 ...
- ProE许可、PTC许可、Creo许可、许可分析、分析许可
Pro/Engineer操作软件(又简称ProE)是美国参数技术公司(PTC)旗下的CAD/CAM/CAE一体化的三维软件,Creo是美国PTC公司于2010年10月推出CAD设计软件包,creo是P ...