面向对象编程的本质:以类的方式组织代码,以对象的组织(封装)数据
三大特性:封装;继承;多态;
方法
静态方法(static) 类名.方法名调用
和类一起加载的
非静态方法 实例化对象(对象类型 对象名=对象值)
类实例化之后才会存在
形参 占位符没有赋值
实参 实际已经赋值了 实参要与形参一一对应
值传递
引用传递
构造器
和类名相同
没有返回值
作用:new本质在调用构造方法
初始化对象的值
注意点:定义有参构造之后,如果想使用无参构造,显示的定义一个无参的构造
封装(高内聚,低耦合)
private get/set方法调用
1.提高程序的安全性,保护数据
2.隐藏代码的实现细节
3.统一接口
4.系统可维护性增加
继承
extends java是单继承
类与类的关系 子类继承父类会拥有其所有方法 方法重写
私有类无法被继承
java中所有的类都默认继承object类
super
1.调用父类的构造方法,必须在构造方法的第一个
2.super必须只能出现在子类的方法或者构造方法中
3.super和this不能同时调用构造方法
this:本身调用者这个对象;没有继承也可以用;本类的构造
方法的重写
父类的引用指向了子类 person s2 =new students();
子类重写父类的方法就调用子类
父类可以指向子类,但不能子类的独有方法
@Override //重写方法
1.方法名必须相同
2.参数列表必须相同
3.修饰符:范围可以扩大 public>protected>default>private
4.抛出的异常:范围只能被缩小 classnotfoundexception-->exception(大)
多态
注意事项:
1.多态是方法的多态,属性没有多态
2.父类和子类有联系,避免类型转换异常
3.存在条件:继承关系,方法需要重写,父类引用指向子类对象!
不能实现
1.static 方法,属于类,不属于实例
2.final 常量
3.private 方法
instanceof 判断一个对象是什么类型
高转低需要强制转换
低转高,会丢失一些原本自己的方法
1.父类引用指向子类的对象
2.把子类转换为父类,向上转型
3.把父类转换为子类,向下转型,强制转换
4.方便方法的调用,减少重复的代码
static(静态变量)
非静态方法可以调用静态方法中的
抽象类(abstract)
abstract 抽象方法,只有方法名字,没有方法的实现
1.不能new这个抽象类,只能靠子类去实现它:约束!
2.抽象类中可以写普通的方法
3.抽象方法必须在抽象类中
抽象类的所有方法,继承了它的子类,都必须要实现它的方法
接口(Interface)
定义方法,由接口实现类重写接口中所有方法
接口中所有定义的方法其实都是抽象的public abstract