面向对象进阶
在idea中可以竖着进行选择,用鼠标滚轮可以选择想要的部分,或者按住alt不松,左键选择想要的部分
ctrl加alt加v自动生成左边,给变量设置对象
static
1.静态变量:被static修饰的成员变量,叫做静态变量
表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量,被该类所有对象共享,不属于对象,属于类
调用方式:
类名调用和对象名调用(只需要调用一次就可以全部调用成功)
只赋值一次就让这类的所有对象赋值上一个变量,不用多次赋值,实现数据共享
由于静态变量是引用数据类型,所以他的初始值是null,在创建变量的时候,他在new对象出现前就出现在堆内存内,存储在静态内储位置,静态变量是随着类的加载而加载的,优先于对象出现的,
2.被static修饰的成员方法,叫做静态方法
javabean类:用来描述一类事物的类。比如student,teacher,dog等
测试类:用来检查其他类是否书写正确,带有main方法的类,是程序的入口
工具类:不是用来描述一类事物的,而是帮我们做一些事情的类
需要对静态方法进行private修饰,因为工具类在作用上只有用处,没有修饰变量的用处。
static的注意事项:
1.静态方法只能访问静态变量和静态方法
2.非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法
继承:.Java中提供一个关键字extends,用这个关键字,我们可以让一个类让另一个类建立起继承关系
.例如在一个教室的学生和老师,大家都有相同的属性,都有名字和i性别,不一样的是行为,所以可以将学生和老师的称为特殊行为称为子类,将大家都有的名字的人都有的类叫做父类,相当于孩子继承了父亲的特征,然后后期还可以自身培养自己的特点
使用继承的好处:
1.可以把多个子类中重复的代码抽取到父类中,提高了代码的复用性
2.子类可以在父类的基础上,增加其他的功能,使子类更强大
使用继承的时间:
当类与类之间,存在相同共性的内容,并满足子类是父类中的一种,就可以考虑使用继承,来优化代码
继承的格式:
public class 子类 extends 父类
继承后的子类会在父类的基础上新增其他功能,子类更强大
在Java中继承的特点和使用方法和c++不太一样“
Java支支持单继承,不支持多继承,但支持多层继承
单继承:一个子类只会继承一个父类
不支持多继承:子类不能同时继承多个父类 好处:不会出现子类继承相同的行为后出现表达错乱的情况,比如儿子收到两个人的指示,a说复习数学,b说复习英语,导致儿子不知道复习哪个的情况
多层继承:相当于儿子继承父亲,父亲继承爷爷,但儿子也可以直接继承爷爷的特点,可以层层完善儿子的特点,父亲继承一点,然后自己加特点,然后在继承给儿子,让儿子更加厉害
1.Java只能单继承,一个类只能继承一个直接父类
2.Java不支持多继承,但是支持多层继承
3.Java中所有的类都或间接继承于object类
权限修饰符private
加上private权限修饰符子类就无法访问了,只能在本类中访问,比如爸爸的私房钱只有自己可以用,
多态:同种类型的对象,表现出的不同形态
多态的调用方式
父类 a=new 子类();
多态的前提1.有继承/实现关系2.有父类引用指向子类对象3.有方法的重写
多态的好处1.使用父类型作为参数,可以接受所有子类对象2.体现多态的扩展性与便利
例如在学生管理系统中,不同的身份在方法的形参调用都不太一样。但是都有共同点,person是他们的父辈,所以可以在调用方法的时候调用父类对象来代表调用他们
多态调用对象的特点:
1.变量调用:编译看左边(javac编译代码的时候,会从左边的父类中有没有这个变量,如果有,编译成功,反之失败),运行看左边(Java运行代码的时候,实际获取的就是左边父类中成员变量的值)
2.方法调用:编译看左边(javac编译代码的时候,会看左边的父类有没有这个方法,如果有,编译成功),运行看右边(Java运行代码的时候,实际上运行的是子类的方法)
理解:
animal a=new dog();
现在是用a去调用变量和方法,而a是animal类型的,所以默认都会从animal这个类去找;
成员变量:在子类的对象中,会把父类的成员变量也继承下来
成员方法;如果子类对方法进行了重写,那么在虚方法表中是会把父类的方法进行覆盖的
xiang'dang
常规继承创造对象
spirngboot
spring boot是spring提供的一个子项目,用于快速构建spring应用程序
传统方式构建spring应用程序
1.导入依赖繁琐 2.项目配置繁琐
springboot 的t特性,用于快速的构建spring应用程序
1.起步依赖2.自动配置3.内嵌的tomcat,jetty(无需部署war文件)4.外部化配置5.不需要xml配置
起步依赖本质上就是一个maven坐标,整合了完成一个功能需要的所有坐标,解决了导入依赖繁琐的问题
自动配置:遵循约定大于配置的原则,在boot程序启动后,一些bean对象会自动注入ioc容器中,不需要手动声明,简化开发,解决了项目配置繁琐的问题