一、向上造型
1.1 即为--父类型的引用指向子类型的对象;
1.2 能点出来什么,看类型,跟对象无关--通过父类的引用只能访问父类的成员,不能访问子类的成员;
二、重写与重载
2.1 重写:看调用方法的对象:如果调用的是子类对象,则无论父类/子类引用类型,调用的都是重写后的方法,如果想调用父类的方法,用super.方法 来调;如果调用的是父类对象,则调用的是父类重写前的方法。
2.2 区别: a)重写--父子类中,完全相同(签名相同)的方法。如何调用,取决于调用对象,而不是引用类型;重写在运行时作用;
b)重载--同一个类中,方法名相同,参数列表不同的方法。调用取决于方法结构(有无参数)。重载在编译时作用;
p.s. :1)编译时,JVM未启动,故而内存没东西(JVM分配内存); 2)子类的访问权限大于或等于父类;
三、抽象类
3.1 抽象方法:由abstract修饰。只有方法的定义,没有方法体,如 方法 int antFormat();
3.2 抽象类:由abstract修饰,可包含抽象方法,也可只包含普通方法;
3.3 抽象类中没有抽象方法也可以将类声明成抽象类;
3.4 抽象类不能实例化,比如 Demo x = new Demo();是错误的;
3.5 抽象类一般需要被继承:1)子类声明成抽象类; 2)子类重写抽象类中所有抽象方法;
3.6 抽象类意义:1)封装子类公用的成员,为子类提供一个公共的类型; 2)定义抽象方法,由子类来做不同的实现,但接口(方法名)是一致的;
四、接口
4.1 接口就是个标准、规范;
4.2 接口中只能包含常量、抽象方法;
4.3 接口不能被实例化;
4.4 子类实现接口,必须将所有抽象方法都实现;
4.5 若子类又想继承父类又想实现接口,则需:先继承后实现接口;
4.6 接口与接口间可以继承;
4.7 接口可以作为一种类型声明变量,通过向上造型来实现:接口类型的引用变量,指向实现该接口的类对象;比如interface Inter{...} class C implements Inter{...}
则 Inter t = new C(); //向上造型
五、多态及继承等
1)多态
5.1 同一类型的引用指向不同对象时,有不同的实现;
5.2 同一个对象造型为不同类型时,有不同功能;
2)强转
5.3 父-子:前提--对象是子;
5.4 转为接口:前提--对象实现了该接口;
p.s. 用instanceof关键字判断某个引用指向的对象是否为指定对象:引用变量 instanceof 数据类型,结果为boolean型。
结论:1)强转成功与否,看对象;
六、内部类
6.1 内部类只为外部类来使用,其他类不可以使用;
6.2 内部类可以直接访问外部类的所有成员,默认有个隐式的指向外部类对象的 外部类名.this ;
6.3 内部类通常只在外部类中被创建-new;
七、匿名内部类--何时使用
7.1 只有一个类(子类、实现类);
7.2 只需要构建一个对象;
7.3 对象构建完,这个类就没有意义了;
面向对象-总结:
1、封装:保证安全。
1)类:封装数据、行为;(作为一个整体操作)
2)方法:封装功能的实现;(隐藏实现的细节)
3)访问修饰符:控制访问权限;(保证数据的安全)
2、继承:实现代码的重用。 extends
3、多态:多种形态,在继承的基础上。 提高可扩展性和可维护性。
1)一个对象造型成不同的类型,有不同的功能;
2)一个类型指向不通的对象,有不同的实现。
八、正则表达式
8.1 正则表达式定义:用一组特殊字符描述的一个字符串格式;
8.2 作用:匹配一个字符串是否满足格式要求;
8.3 [xyz]的作用:表示xyz中的任何一个字符;[^xyz]:除xyz的其他任意一个字符;