面向对象的三个特征:
一.封装:
封装:将解决问题的算法,设计在模板类中 ,我们看不见算法但是可以利用这个算法。
封装的好处:1.更好的维护数据;
2.使用者无需关心内部实现,只要知道如何使用即可。
3.封装设计的规范:合理隐藏,合理暴露。
隐藏的方法:将定义方法或者变量的public改为private(权限修饰符,该方法只能在该类中进行访问)
权限修饰符 :private//被private修饰的成员只能在本类中被调用。
public//可以被可以在任意文件夹总被访问,但是不能跨项目
default //同一个类同一个包中//只要在一个类中,还有同一个文件夹中可以访问。
protected:同一个类中,同一个包,不同包的子类。
具体思路:针对私有的成员变量,提供对应的setXXX和getXXX,set是进行设置变量的值,get是用来返回目标值。
javaBean:实体类,封装数据的类
标准:这个类中的成员变量都应该是私有的,并且要对外提供相应的getXXX,和setXXX方法.
1.成员方法私有化
2.空参带参构造方法。
3.对于私有的成员变量,提供相应的setXXX和getXXX方法。
4.实体类只负责数据的存放,而对数据的处理交给其他类来完成,以实现数据和数据业务处理相分离。
二.继承:
1.部分关键字的介绍:
static关键字:被static关键字修饰的成员不能够利用this.进行调用。
特点:1.被类定义
2.多了一种调用方法,可以通过类名直接进行调用。(静态成员都推荐直接用类名进行调用。)
3.随着类的加载而加载,优先于对象存在。(被static修饰的成员可以在对象创建之初就进行调用。)
使用场景:成员是否被这个类所有的对象共享,就需要用static关键字(被static修饰的成员会放在静态成员变量区)
static通常用来制作工具类,工具类不是描述事物的,而是向我们完成一些事情的类。
如果发现一个类中全部都是静态方法,全部都是static所修饰,私有该类的构造方法,目的:为了不让其他类进行构造对象占据内存,静态的主方法中访问静态方法,只能访问静态的成员,也就是static修饰的成员。
Final关键字
Final关键字是用来修饰类,成员,意思是最终的
Final关键字修饰的特点不能够进行重写。
Final表示该类是最终类不能被继承。
Final修饰变量的命名规范:
如果变量名是一个单词,所有的字母大写max MAX
如果变量名是多个单词,所有字母大写,中间使用下划线分隔maxVlue MAX_VALUE
被final修饰的变量只能够被赋值一次。
Final修饰基本数据类型的时候,其变量值无法改变。
重新认识主方法:
public static void main(String [] args){
}
public 权限修饰符,允许主方法被JVM虚拟机有权限调用。
static :修饰主方法,使得虚拟机不用创建对象就可以直接被调用。
void:无返回值,由于主方法被虚拟机调用不需要返回值。
Main:方法名,JVM只能识别这个方法。
String [] args:此处定义了一个数组,这个args是数组的名字,可以进行更改,此前用来进行键盘录入,现在作用,但作为传统被保存下来。
继承是面向对象的三大特性之一。
继承就是让类于类产生父子的关系。子类可以直接使用父类中非私有的成员。
public class 子类 extends 父类{}
public class Fu{
}
public class zi extends Fu{
}
就上述代码而言: Fu是父类,也称为基类,超类。 zi是子类,也被称为派生类。
当类与类存在共性,同时类与类存在着关系(谁是谁的一种。),这个时候可以进行继承。
如果说父类与子类,中出现了重名的成员变量,使用时会优先使用子类中的变量值。
如果非要使用父类中的成员变量的值的话,需要使用super关键字。
成员变量的访问特点:
this关键字:访问本类的成员变量。
super关键字:访问父类中的成员变量。
子父类中出现了方法声明一模一样的方法(方法名,形参相同,返回值相同),在创建子类对象的时并调用子类方法逻辑时,需要进行方法的重写。(对父类中这个方法逻辑进行重写。)
方法重写,方法重载:
方法重载(Over load)在同一个类中,方法名字相同,但是方法参数不同。
方法重写(Override):在父类中,出现了方法声明一模一样的方法(方法,参数,顺序)
目标一:
注解@Override(可以校验是否子父类。)
目标二:
当子类需要父类的方法,但是觉得父类的方法逻辑不好(修改|增强)就可以对父类进行重写。
注意事项:
父类中被私有的方法无法进行重写。
子类重写父类中的方法时,访问权限必须大于父类。
注意:protected的权限不同类中的子类。
先从同包的子类调用,在调用子类里面的父类的方法。
JAVA只能单继承不能进行多继承。但可以A继承B,B继承C,这样A可以调用B,C类的方法。
继承中成员的访问特点:------构造方法。
构造方法能否被继承?------不能因为构造方法,要求的名字必须与类名相同
在所有的构造方法中的第一行代码,都隐藏了一句话super();他呢会通过一句话,完成对父类的初始化
细节:java中所有的类都直接或者间接的继承了Object类。
继承中的内存图解:
super和this
如果子类中需要调用父类的对象在子类中没有存在,那么就可以直接用super调用。
开闭原则:对功能进行扩展,对修改代码做关闭,this()和super.()都在争夺构造方法的第一行,因此不能共存。