多态、内部类、权限修饰符、代码块
如有侵权,请联系删除
今日重点:
多态【重点掌握】
内部类【匿名内部类】
权限修饰符【了解】
代码库【理解】
java对象的的基本特征是:
封装、继承、多态
1.1什么是多态:
同一个对象,具有不同的形态
1.2多态的前提条件【重点】
1.必须有继承的关系
2.必须有方法的重写
1.3多态调用方法的特点:
编译看父(左),运行看子(右)
Animaol an=new Dog();
Show(new Dog().show);
1.4多态的好处
多态的好处:
提高了代码的扩展性/灵活性【重要】
多态的弊端;
使用多态,必须掉用(子)父类,共有的方法,(只能调用重写后的,才能使用)不能调用独有的方法
1.5多态弊端的解决方案:
自动类型转换:
从小到大,自动转换
强制类型转换:
从大到小,强制转换
向上转型:
Animal an=new Dog();
向下转型:(比须有向上转型)
Dog dog=(Dog)an;
1.6向下转型会发生异常
如果转换错误的话会出现:ClassCaseException
public static void main(String[] args) {
//1.创建一个对象,使用多态
Animal an = new Cat();
//2.调用方法
an.eat(); //可以调用
//ClassCastException 类型转换异常
//TODO Cat cannot be cast to Dog
Dog dd = (Dog)an; //必须先向下转型
dd.lookHome();//然后才能调用特有方法
}
1.7如何判断他的类型
instanceof关键字
if(参数 instanceof 类){
}
内部类
2.1什么是内部类:
意思是:一个类A,在A中内部写一个B类,就叫内部类
2.2内部类的特点:
成员内部类:(在成员内部类,可以无条件访问外部类的任何成员)
Person.Heart h = new Person().new Heart();
//可以写这么写
Person.Heart h1 = p1.new Heart();
局部内部类:(在方法中)
匿名内部类:
2.3内部类编译之后的字节码文件:
外部类$内部类名.class
2.4匿名内部类:
- 什么是匿名内部类:
匿名内部类是内部类的简化形式,匿名内部类就是,简化到不需要内部类的名字。
- 内部类的作用:
匿名内部类可以帮助我们快速的创建一个(父类的)子类对象或者一个接口的实现类的对象。
3.权限修饰符
第四章 代码块
由一对大括号括起来的
4.1 构造代码块
{
}
4.2 静态代码块(随着类的加载而加载,且只加载一次)
static{
sout
}