1、子类继承父类后,覆写父类中方法(方法名、参数、返回值均相同),覆写的目的在于优化父类的功能。
2、在子类进行方法覆写之后,如想要继续调用父类中的方法,需使用“super.方法”
3、被覆写的方法不能够拥有比父类更为严格的访问权限。public>default(不写)>private
注:
package com.demo;
class Channel {
private void connect() {
System.out.println("父类方法");
}
public void fun() {
this.connect(); //调用本类方法
}
}
class DataChanner extends Channel {
//此时并不是一个覆写,因为父类connect()方法不可见,这个方法对于子类而言是一个新定义的方法
public void connect() {
System.out.println("子类方法");
}
}
public class FuXie {
public static void main(String[] args) {
DataChanner channel = new DataChanner();
channel.fun();
}
}
4、【重要】
Overloading-重载 -方法名称相同,参数类型、返回值不同 -没有权限限制-发生在一个类中
Override-覆写-方法名称、参数类型、返回值均相同 - 被覆写的方法不能够拥有比父类更为严格的访问权限-发生在继承关系类中
在进行方法重载的时候并没有对返回值类型做出限制,但是好的习惯应该保持返回值类型一致。
5、属性覆盖
子类定义了与父类相同名称的成员,此时若要访问父类中属性,需用“super.属性名”
【重要】super与this的区别?
在程序类中使用this表示先从本类中查找所需要的属性或方法,如果本类中不存在则查找父类定义,如果使用super则表示不查找子类,直接查找父类。
this和super都可以进行构造方法的调用,但是this()调用的是本类构造,super()调用的是父类构造。两个语句都必须放在构造的首行,所以不能同时出现。
this可以表示当前对象。
6、fina关键字
final在程序中描述的是终结器的概念,在java里使用final关键字的功能:定义不能被继承的类;定义不能被覆写的方法和常量;
在final关键字里面有一个重要技术,可以利用其定义常量,常量的内容一经定义不可修改,常量往往都是公共的,所以常见形式是全局常量
public static final ON = 1;
public static final OFF = 0; //常量大写
利用静态池的概念验证常量:
package com.demo;
public class Pool {
public static void main(String[] args) {
final String INFO = "aaa.";
String str1 = "aaa.b";
String str2 = INFO + "b";
System.out.println(str1 ==str2);
}
}
输出:true