类成员的访问修饰符 :
变量:
1.成员变量会有初值:参考数组的初值(整形0,浮点型0.0,布尔类型false,char类型是空格,引用类型是null)
2.局部变量没有初值
方法重载
同一个类中、方法名相同、参数个数或类型不同、与返回值、访问修饰符无关
继承
是Java中实现代码重用的重要手段之一。Java中只支持单根继承,即一个类只能有一个直接父类
继承条件下构造方法的调用规则:
1.子类构造方法没有通过super显式调用父类的有参构造方法,也没通过this显式调用自身其他构造方法,系统默认调用父类的无参构造方法
2.子类构造方法通过super显式调用父类的有参构造方法,执行父类相应构造方法,而不执行父类无参构造方法
3.子类构造方法通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则
方法重写:
1.方法名相同
2.参数列表相同
3.返回值类型相同或者是其子类
4.访问权限不能严于父类
5.父类的静态方法不能被子类覆盖为非静态方法,父类的非静态方法不能被子类覆盖为静态方法
6.子类可以定义与父类同名的静态方法,以便在子类中隐藏父类的静态方法
7.父类的私有方法不能被子类覆盖
8.不能抛出比父类方法更多的异常
方法重写与方法重载区别:
抽象方法:
1.抽象方法没有方法体
2.抽象方法必须在抽象类里
3.抽象方法必须在子类中被实现,除非子类是抽象类
静态代码块
1.某个类当中固有的代码块
2.一个类当中可以有多个静态代码块,按编写顺序执行
3.静态代码块,只会在类被****加载****的情况下执行一次(声明例外)
4.类加载机制:只要执行了和这个类有关的****调用****,那么该类必然已经被加载
抽象类:
1.在抽象类当中,可以有普通方法,也可以有抽象方法;但是,抽象方法只能在抽象类当中声明;
2.抽象类除了多了抽象方法和不能被实例化之外,和普通类一致
3.抽象方法的语法,在修饰符和返回值之间,添加关键字abstract,抽象方法没有方法体,即不需要立即实现
4.没有抽象的属性
5.抽象类,不可被实例化
6.抽象方法必须在子类当中被实现,除非子类也是抽象类,也就是说,在抽象的类的子类当中,只要有一个子类实现了抽象方法,其后代将不必一定实现该抽象方法
7.对于一个子类来说,其父类当中所有的抽象方法,如果没有被实现过,那么将都需要去实现这些抽象方法
向上转型:父类声明指向子类对象
1.向上转型,父类声明,只能调用子类重写的方法,或者本身实现没有被子类重写的方法
2.多个子类实现同一个****重写****的方法,优先调用距离实现类最近的那个
3.向上转型,子类特有的方法,无法被调用
4.向上转型属于自动类型转换
向下转型:强制将父类型变为子类型
1.首先要向上转型过了,才能向下转型
2.向下转型之前,一定要判断实例的类型,要强转为那个引用,就判断是否是这个引用
3.向下转型属于强制类型转换
接口:
1.语法:使用interface来声明
2.方法:所有的方法都是抽象方法,不存在普通方法
3.抽象方法,只能使用共有的和默认的两种修饰符;因为,如果是私有的,那么除了本类以外不可见,如果是受保护的,要继承可见,那么问题就是****是否可见****。
4.接口当中,所有的属性都是静态常量
5.接口可以多实现,用逗号隔开,但是继承只能单根继承
6.接口同样不可以被实例化
7.接口和接口之间是多继承
8.所有接口当中的抽象方法,都必须被实现类实现
9.instanceof判断是否是某个类型,看实现类,而不是看声明的类型
10.接口没有构造,抽象类有构造