类与对象
类是一个抽象模板 对象是一个具体的实例
方法
方法需要定义和调用
对应的引用
引用类型: 基本类型
对象是通过引用来操作的: 栈----> 堆
属性 :字段Field 成员变量
对象的创建和使用
必须使用new 关键字创造对象, new关键字调用构造器
Person xm =new Person();
对象的属性 xm.name;
对象的方法 xm.sleep()
类
静态的属性 属性
动态的行为 方法
封装
程序追求“高内聚,低耦合”。 高内聚是类的内部数据操作细节自己完成,不允许外部干涉 。低耦合: 仅暴露少量的方法给外部使用
封装 :又称数据的隐藏,通常直接禁止访问一个对象中数据的实际表示,通过操作接口来访问。
目的
- 提高程序的安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 增加系统可维护性
继承
- 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模
- extands的意思是扩展 ,子类是父类的扩展
- JAVA中只有单继承,没有多继承
- 继承是 类和类之间的关系,除此之外,类和类之间的关系还有**依赖,组合,聚合
- 子类和父类之间的关系,从意义上讲应该具有**“ is a”** 的关系
-
- object类 在java中所有的类默认继承object类
- super
-
- 调用父类的构造方法必须在构造方法的第一个
- 必须只能出现在子类的方法或者构造方法中
- super和this不能同时调用构造方法
- this 没有继承也可以使用,super只有继承才可以使用
-
- this() 本类的构造
- super() 父类的构造
- 方法重写
方法重写
静态方法和非静态方法
- 静态方法 方法的调用只和左边定义
重写 :需要有继承关系,子类重写父类的方法
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大但不能缩小
- 抛出的异常:范围可以被缩小但不能扩大
为什么要重写:
父类的功能,子类不一定需要,或者不一定满足
多态
- 子类 能调用的方法都是自己的或者继承父类的
- 父类 可以指向子类,但不能调用子类独有的方法
instanceof 和类型转换
x instanceof y //若x y 之间有父子关系,则编译通过,反之不通过。
static关键字
public class test {
{
System.out.println("匿名块");
}
static {
System.out.println("static块");
}
public test(){
System.out.println("构造方法");
}
static {
System.out.println("static块2");
}
{
System.out.println("匿名块2");
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CpzB5ESV-1612421855965)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20210204141351317.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c1M0VNFh-1612421855967)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20210204141341466.png)]
abstract关键字
抽象方法,只有方法名字,没有方法的实现!
抽象类里可以写普通方法但抽象方法只能写在抽象类里
接口 :只有规范 自己无法写方法
关键词 interface
接口都要有实现类 用关键字implements 并且需要实现接口内所有方法
可以利用接口实现多继承
内部类
内部类 在class内部定义的class
局部内部类 在方法内部定义的类