特点

1、封装
2、继承
3、多态

封装:属性的私有化,行为公开化—目的是为了将一段逻辑封装在一个方法或类中,便于其他对象调用

继承:目的是为了,子类拓展父类的功能,以及直接调用父类的非私有的内容。优点节约掉吗。注意:java中支持单继承

多态:一个对象多种形态。贯穿于整个面向对象的编程。
实现多态的方式(多态的体现):向上转型(父类引用指向子类对象,上传转型后只能使用父类方法,被重写的方法是调用子类重写父类方法的结果)和向下转型(强制类型转换,即父类到子类 )。

编译期和运行期
编译期:绑定和检查语法,把java文件编译成class文件。在向上转型时,看的是父类的引用(编译看左,运行看右)
运行期:创建对象,调用运行方法中的内容-在向上转型中看的是子类对象(编译看左,运行看右)

重载和重写
重载:是编译器多态
重写:是运行期多态

abstract(抽象):
1、抽象类
(1)不能实例化,但有构造方法
(2)抽象类本身就是给子类继承的,子类继承父类的的时候,必须实现父类(抽象类)的所有抽象方法,如果没全部实现,那么该类还是一个抽象类
(3)抽象类不能使用final修饰,因为final需要实例化

抽象方法:没有方法体。必须在子类中重写,可以重载。不能使用static/final/private修饰

interface(接口):是一个特许的抽象类,抽象的高度高于抽象类。没有构造函数。类与接口之间关系是实现关系。使用implements关键字,类再实现接口的时候,需要重写接口中所有的抽象方法,如果没有重写全部,那么这个类就是抽象类。

在jdk8.0之前中,接口可以定义常量和抽象方法。jdk8.0之后,可以定义默认方法,也可以定义静态方法。
1、接口与类之间是多实现,接口与接口之间是多继承(单根型的拓展)。
2、接口的作用,作为模板或协议,约束使用的功能

方法的重载和重写
重载:
(1)方法名相同,参数列表不同(方法标记)。返回值不影响。是程序中编译期根据参数来绑定的
重写:
(1)方法名和参数列表相同,返回值相同(当子类与父类之间产生方法重写的后,子类的返回值不能大于父类),权限修饰符不能使用private,也不可以使用final修饰

final:
(1)修饰方法,该方法不能被重写
(2)修饰类,该类不能被继承、
(3)修饰属性,该属性不能被再次赋值

—基本数据类型的变量—只能赋值一次
—引用类型的变量—指向(地址值)只能赋值一次,但是对象的内容可以修改

static:表示静态资源
(1)好处是,优于mian方法执行的,保存在内存中的方法区
(2)static修饰的成员变量,全局共享一个(只有一份)
(3)通常static用于加载静态资源的使用,静态代码块

内部类:
(1)成员内部类
(2)局部内部类
(3)匿名内部类
(4)静态内部类
除了静态内部类以外,其余的内部类中,都不允许定义静态的变量和静态的方法
内部类和匿名内部类的作用:都是为了节约代码—通常内部类是为了外部类服务的。
匿名内部类本质是实现了对应接口或者继承了对应的了,任何一个接口介意产生匿名内部类,任何一个可以被继承的类都可以产生匿名内部类

权限修饰符:
(1)public所有区域都 可以访问
(2)protected本来以及子类还有同包 可以访问
(3)默认-本类以及同包类
(4)private—只能在本类中访问,子类中不能继承过去但不能被访问

构造函数:
(1)作用:初始化全员参数。
(2)语法:方法名和类名完全一致,没有返回类型,权限修饰没有限制。构造函数支持重载。
(3)注意

子类在继承父类的时候,会自动调用无参构造函数,然后再实例化自己。通过构造函数的第一行的super(),所以我们在创建实例对象的时候,必须同时定义无参和有参构造函数,因为直接定义有参构造函数将覆盖无参构造函数

this和super:
(1)this—表示本类,那个对象正在被调用,那么this就是这个对象
(2)this.—表示对象调用本类的内容(属性、方法)
(3)this()—调用本类中的构造方法(如果传入参数就调用对用有参构造)

(1)super—表示父类,一般使用这个关键字表示父类内容
(2)super.—调用父类的内容(方法、属性)
(3)super()—调用父类的构造方法(如果传入参数就调用对用有参构造)