目录
在今天的笔记中有将之前的笔记重复归纳整理一番,这样进行记忆更加方便。
从前面笔记我们可以知道面向对象三大特性分别为:封装、继承、多态。
在讲三大特性前我们先了解一下修饰符。
修饰符
Java语言提供了很多修饰符,大概分为两类:
- 访问权限修饰符
- 非访问权限修饰符
访问权限修饰符
用来规定 该属性或方法的访问权限
- public:共有访问。对所有的类都可见。
- protected:保护型访问。对同一个包可见,对不同的包的子类可见。
- default:默认访问权限。只对同一个包可见,注意对不同的包的子类不可见。
- private:私有访问。只对同一个类可见,其余都不见。
即:public > protected > default > private
类内部 |
本包 |
子类 |
外部包 |
|
public |
√ |
√ |
√ |
√ |
protected |
√ |
√ |
√ |
× |
default |
√ |
√ |
× |
× |
private |
√ |
× |
× |
× |
非访问权限修饰符
- static 修饰符,用来创建类方法和类变量。
- final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
- abstract修饰符,用来创建抽象类和抽象方法。
- synchronized 用于多线程的同步。
- volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
- transient:序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。
封装
概念:私有化属性 并提供 公有的访问方法
封装.就是隐藏实现细节
将属性私有化,提供公有方法访问私有属性通过这些公有方法访问私有属性
封装的实现:
1、修改属性的可见性来限制对属性的访问
2、为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些属性的访问
3、在setter和getter方法中,加入对属性的存取限制
继承
- 子类拥有父类所有属性和方法()
- 继承也不是随意使用的
- 如果过多使用继承 代码的耦合性 就会变高
- 继承下 父类的构造函数 和子类的 都会执行,并且 父类先执行。
- 如果父子类的构造函数 都需要参数,那么 子类可以让main给 ,父类呢?
使用super关键子解决
类似于中文语境的 我爹 的意思
子类中 指向父类 就是 super
例子(在子类中):
super("父类的参数");//在子类中调用 父类的 构造函数
在继承关系下 有一个东西被称为 方法的 重写
方法的重写: 继承下 子类的方法 和 父类的相同 就称为方法的重写
最终执行的 是子类的方法(就近原则 更贴近它的对象)
子类中 想调用 父类方法 就可以用 super来调用
java中通过super来实现对父类成员的访问,super用来引用当前对象的父类。
super的使用只有三种情况:
1)访问父类的非private成员变量
2)调用父类中被重写的方法
3)调用父类的构造函数
多态
是多种形态能力的表述 也是继承的一种体现
什么是多态?
简单来说,多态是具有表现多种形态的能力的特征
同一个实现接口,使用不同的实例而执行不同操作
追朔关系:
一、向上转型(追溯)
a、父类引用调用父类方法
b、父类引用调用子类方法
二、向下转型(追溯)
c、子类引用调用父类方法
d、子类引用调用子类方法
//只在继承关系(子类 父类)下 有追朔关系
拓展知识点:
final最终 常量 会去使用
super我爹
this我自己(本对象)
字符集问题
字符集 就类似于 字典
utf-8(万国码) GBK(ANSI)......