- ClassCastExcption:类型转换异常(一般出现在多态的向下转型中容易出现)。
- 大的对象不能直接给小的(自己揣测的)
- 重写的方法,先在子类中查找,没有再在父类中查找。
- 子类中没有父类中出现过的方法,方法就被继承过来了。
- 在java中一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。(abstract)
- 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类。
- 抽象方法不能有主体就是不能有{}。
- 抽象类不能实例化。(因为它不是具体的)
- 抽象类有构造方法,但是不能实例化(它的作用是用于子类访问父类数据的初始化)
- 抽象类的子类A;如果不想重写抽象方法,该子类是一个抽象类。B;重写所有的抽象方法,这个时候子类是一个具体的类。
- 抽象类的实例化其实是通过具体的子类实现的,是多态的方式 Animal a=new Cat();
- 抽象类的成员方法特性:A;抽象方法 强制子类做的事情 B;非抽象方法 子类继承的事情,提高代码复用性。
- 抽象方法的格式 public abstract void eat(); 。
- 一个类如果没有抽象方法,也可以定义为抽象类,这样做的意义就是不让创建对象。
- Abstract 不能和private(产生冲突) 、final(产生冲突)、static(无意义,类的调用没有方法体,故没有意义)这些关键字共存。
- 接口(interface)是扩展性的功能。
- Class 类名 implements 接口名{}
- 接口本身不能实例化。接口的子类A;可以是抽象类,但是意义不大。B;可以是具体的类,要重写接口中的所有抽象方法。
- 接口中的变量默认是常量,不管是否加了final.并且是静态的(因为有默认修饰符public static final).接口没有构造方法。那么子类如何实例化呢?因为所有的类都默认继承object类,所以可以通过该类实例化。接口中的成员方法只能是抽象方法,默认修饰符:public abstract(建议自己给出)。
- 可以同时实现多个接口。接口与接口之间的继承关系,可以是单继承,也可以是多继承(interface Sister extends father,mother{});
- 抽象类与接口的设计理念的区别:抽象类:被继承体现的是is a (是xx)的关系。抽象类中定义的是该继承体系的共性功能。接口:被实现体现的是like a(像xx)的关系,接口中定义的是该继承体系的扩展功能。
- 分析:从具体到抽象。实现:从抽象到具体 。使用:使用具体的。
- 形式参数如果是引用类型:A;类名(需要的是该类的对象)B;抽象类:需要的是该抽象类的子类对象。C;接口:需要的是该接口的实现类对象。
- 返回值类型如果是引用类型:A;类:返回的是该类的对象。 B:抽象类:返回的是该抽象类的子类对象。C接口:返回的是该接口的实现类的对象。
- 链式编程的特点:每次调用完毕之后,返回的是一个对象。(A.B().C());
- 包:(其实就是文件夹)作用:A;把相同的类名放到不同的包中B;对类进行分类管理。
- 包的定义:package 包名;多级包用.分开即可。注意事项:A;package语句必须是程序的第一条可执行的代码B;package语句在一个java文件中只能有一个C;如果没有package,默认表示无包名。
- 带包的编译和运行:A;手动式1.编写一个带包的java文件2.通过javac命令编译该java文件3.手动创建包名4.把2步骤的的class文件放到3步骤的的最底层包5.回到包根目录在同一目录的地方,然后带包运行。B;自动式:1.编写一个带包的java文件2:javac编译的时候带上-d即可(javac –d .helloworld)3;回到和包根目录在同一目录的地方,然后带包运行。
- 导入包的时候最好导到类,不要用星Package(只能有一个)>import(可以有多个)>class(可以有多个,建议是一个)(这是三者的顺序关系)
- 权限修饰符:public(同一类中,同一包【子类,其他类】,不同包【子类】,不同包【其他类】都可以访问)protect(同一类中,同一包【子类,其他类】,不同包【子类】可以访问)默认修饰符(同一类中,同一包【子类,其他类】可以访问)private(同一类中可以访问)访问权限依次减小。这四种权限修饰符在任意时刻只能出现一种。
- 状态修饰符(static final)抽象修饰符(abstract)
- 修饰类的有(默认修饰符,public,fianl, abstract)不能是(private protected static[可以修饰内部类]).(用得最多的是public)成员变量除了abstract都可以修饰。(用的最多的是private)(局部成员变量不能用private修饰) 构造方法只能是权限修饰符修饰。(用得最多的是public)所有的修饰符都可以修饰方法(用的最多的是public)
- 把类定义在其它类的内部,这个类就称为内部类。
- 内部类可以直接访问外部类的成员,包括私有。外部类要访问内部类的成员,必须创建对象(内部类对象)
- 内部类的位置:成员位置:在成员位置定义的类,称为成员内部类。局部位置(就是在方法里面):在局部位置定义的类,称为局部内部类。
- 如何直接访问内部类成员(外部类名.内部类名 对象名=外部类对象.内部类对象)对象是new xx();
- 成员内部类被静态修饰后的访问方式是:外部类名.内部类名 对象名=new 外部类名.内部类名();
- 成员内部类的修饰符:private 为了保证数据的安全性 static:为了方便 访问数据(注意:静态内部类访问的外部类数据必须是静态)
- 注意:内部类和外部类没有继承关系。可以通过外部类名限定this对象。(xxx.this).
- 局部内部类A;可以直接访问外部类的成员B;在局部位置,可以创建内部类对象,通过对象调用内部类的方法,来使用局部内部类功能。------》待续
时间: 2024-11-09 04:31:59