1.抽象类
1.不可被实例化,不能被final修饰
2.必须为public和private,因为必须被继承
3.子类必须覆写所有抽像方法
2.接口
1.所有方法都是抽像方法
全部属性都是全局常量
变量定义 可省略public static final 关键字
函数定义 可省略public abstract 关键字
2.接口允许多继承,多实现
3.接口不能有静态方法(静态方法可以重载,但不能重写,因为是全局的),抽象类可以
4.接口不能有构造方法(因为是未实现的),抽像类可以
3.多态
声明父类new子类
以父类对象作为入口参数 Person p = new Student();
父类 作为方法的返回值类型
1.重写和重载
重写是父子类中,重载是同一类中
子类重写后,访问权限不能比父类的低
2.类型转换
子类可以直接用父类的引用接收,而父类转为子类需要强制转换!!!
可以抽象父类作为入口参数
3. instanceof
返回boolean类型的值,判断一个对象是否为类的实例(与分支连用)
4.Object类
是所有类的父类,Number类是六大基本数据类型的父类
5.toString方法
用syso打印对象时,输出此函数的返回值,用于对象的介绍信息
6.equals方法
指示某个其他对象是否“等于”此对象
4.内部类
1、成员内部类 2、局部内部类 3、匿名内部类 4、静态内部类
1.成员内部类
成员内部类是最普通的内部类,它的定义为位于另一个类的内部,
成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。 不过要注意的是,当成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,即默 认情况下访问的是成员内部类的成员。如果要访问外部类的同名成员,需要使用this
2.局部内部类
局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限 于方法内或者该作用域内。
局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及 static修饰符的。(因为它必然是要拿来用的,若私有,外界则无法访问)
3.匿名内部类
匿名内部类由于没有名字,所以它的创建方式有点儿奇怪。创建格式如下: new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 在这里我们看到使用匿名内部类我们必须要继承一个父类或者实现一个接口,当然也仅能只继承一个父类 或者实现一个接口。同时它也是没有class关键字,这是因为匿名内部类是直接使用new来生成一个对象的 引用。当然这个引用是隐式的。
4.静态内部类
静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。 静态内部类是不需要依赖于外部类对象的,这点和类的静态成员属性有点类似,并且它不能使用外部类的非 static成员变量或者方法.
5.包装类
Integer, Character, Float, Double, Boolean, Byte, Short, Long
现在javaJDK中,已经能够自动装箱和拆箱,所以仅需关注包装类提供函数,如
public static int parseInt(String s) :将String变为int型数据
6.可变参数
用法示例:
public int sum(int... nums){......} 用nums作为一个数据组来接受
可变参数只能出现在参数列表的最后
7.递归