Day07_面向对象
面向对象(OOP)
本质
以类的方法组织代码,以对象的组织(封装)数据
三大特性
-
封装
-
继承
-
多态
方法定义
静态方法:public static
非静态方法:public
类与对象的关系
类时一种抽象的数据类型,对某一类事物整体描述,但不代表某一个具体的事物。
对象是抽象概念的具体实例。
创建与初始化对象
使用new关键字创建对象
封装
//类 private:私有的
public class Student{
private String name;
private int id;
private char sex;
public String getName(){
return this.name;
}//get 获得这个数据
public void setName(String name){
this.name = name;
}//set 给这个数据设置值
}
继承
extends 扩展 子类是父类的扩展
private无法继承
public class Person{
}
public class Student extends Person{
}//子类继承父类全部方法
super();
调用父类的方法(必须放在子类第一行)
方法重写
都是方法的重写,与属性无关
前提: 有继承关系,子类重写父类的方法
-
方法名相同
-
参数列表相同
-
修饰符:范围可以扩大,但不能缩小
-
抛出的异常:范围可以缩小,但不能扩大
重写的原因:
-
父类方法子类不一定需要,或不一定满足
Alt + Insert : override;
多态
-
多态是方法的多态,属性没有多态
-
父类和子类有联系,出现类型转换异常
-
存在条件:继承关系,方法需要重写,父类引用指向子类对象
static final private 不能多态
instance of
X instanceof Y 是否包含
A和B比较之前会先判断A能不能转换成B类型,能则通过,不能则编译报错
static
静态的变量
非静态可调用静态,静态不能调用非静态
和类一起加载的
不加static,在类实例化后才存在,不能方法调用
abstract
抽象类
public abtract class Action{
}
只有方法名字,没有方法的实现
接口
只有规范,无法自己写方法
约束和实现分离
interface 定义的关键字 接口都需要有实现类
内部类
public class Outer{
//外部类方法
class Inner{
//内部类方法
}
}
public class Application{
public static void main(String[] args){
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
}
}