网站:https://baobeihuijia.com/bbhj/contents/3/195510.html
协议://主机[: 端口][/路径][?查询参数]
如果没有赋值的话,java会给出默认值
可以通过构造函数参数不同进行不同的初始化构造,无参构造在没有别的构造时可以省略
当多个对象具有相同的元素,使用static,并且使用类名来调用,静态对象和静态方法不从属于任何对象,方法内使用的信息全部来自于参数
final的意思是这个变量只能赋值一次
变量类型:
继承:减少字段的定义和方法的重写
基本类型:byte,short,int,long,float,double,char,boolean
引用类型:对象,数组,String,包装类型(Byte,Character, Integer)
数据类型转换:
1、基本类型
boolean不可以和其他转化
顺箭头java自动转换,逆着箭头需要进行强制转换(可能损失精度)
2、包装和基本类型的转换
3、对象类型的转换
java中的继承只能是单继承
object是类的顶层父类,隐式继承
对象类型之间的向上转型:a is a b, now a transfer b 隐式转换:Animal a = new cat() :对象还是new的对象,只不过用父类型来代表。无法调用子类型的变量
对象类型之间的向下转型:由animal转化为cat时需要强制转换,Cat a = (Cat) a;是可以的, Dog d = (Dog) a: a还是指一只猫,猫 not is a 狗 ;Object b = new Cat; Animal g = (Animal) b是可以的,因为b实际指一只猫,猫 is a animal,所以正确【总结:逆着转化需要真正代表的对象和目标对象符合is a的关系】
向上转型可以使用同一的类型来表示子类型,比如在处理数组和传参参数的时候,而向下转型可以再还原回来
4、不属于以上三种的类型转化
同一个方法表现出了不同的行为,那么此方法具有多态性 poly morphism(多种形态)
Animal[] animals = getAnimals()
animals[i].say()
虽然表面上都是animals类型的say方法,但是在say的时候会去找对应的真正对象
能够产生多态的情况;
1、用父类型来代表子类型,用一个父类型统一操作子类对象
2、方法重写:子类和父类都有相同的方法say,父类一定要有,不然调用就会报错,子类如果有的话就调用子类的
先看对象的真正类型
优先执行真正类型中的重写方法
没有重写就执行父类的方法
ctri+o对方法进行重写
多态的好处:加新方法的时候,对原有代码的改动非常小
为了保护成员变量不被外界恶意修改,可以将成员变量变为私有的
四种访问修饰符
使用原则:尽可能让访问范围更小:private<默认
javabean是一种写java的规范
javabean中一般只封装数据,除了getset没有别的复杂逻辑方法
行话:有getName/setName方法,Teacher这个javabean有name属性,有字段不一定有属性!
一个类可以实现多个接口
接口:
接口多态:
抽象方法:只有方法声明,没有方法体
封装
在同一个文件下的限制:
真正实现的时候,很少用父子类来进行代码复用,而会使用接口来减少代码复用,并且会单独用javabean存数据,用service存储方法,实现数据和逻辑的分离
try-catch: 没有异常就照常执行,有异常的话可以通过执行catch语句处理异常
catch获取异常对象,让程序恢复正常流程
抛出异常是将异常对象交给了方法的上一层(Spring会自动向上抛出)
-
异常分为两大类
finally:无论是否出现异常都会执行finally 记得close关闭资源