方法
静态方法->只能调用静态方法和静态成员变量,可通过对象和类名调用
实例方法->只能通过对象调用
继承(不能继承父类的private成员)
子类对象的构造过程:
java语言中,使用构造方法来构造并初始化对象。当用子类的构造方法创建一个子类的对象时,子类构造方法总是先调用
其父类的某个构造方法,以创建和初始化子类的父类成员。如果子类的构造方法没有指明使用父类的哪个构造方法,子类就调
用父类的不带参数的构造方法,然后执行子类构造方法。
子类对象的构造过程是这样的:
1.将子类中声明的成员变量或方法作为子类对象的成员变量或方法。
2.将从父类继承的父类的成员变量或方法作为子类对象的成员变量或方法。
*尽管子类对象的构造过程中,子类只继承了父类的部分成员变量或方法。但在分配内存空间时,所有父类的成员变量都分配
了内存空间。
成员变量的隐藏:
当在子类中定义与父类中同名的成员变量时,子类就隐藏了继承的成员变量,即子类对象以及子类自己声明定义的方法操作与
父类中同名的成员变量。
方法重载和方法覆盖的区别:
重载可以是存在于父和子的内部,或者父与子之间; 覆盖只能存在于父与子之间
重载对于参数列表有要求,不能相同; 覆盖必相同
重载的返回数据类型没得要求; 方法覆盖必须一致。
this关键字:
this不能出现在static环境中,,包括static变量,static方法,static语句块等,否则编译时会出现“无法从静态上下文中引用
非静态变量this”之类的错误。
this用于指示本类的成员变量等,而super用于指示父类当中的:
class A {
int x=2,y=3;
}
class B extends A{
int x=20,y=30;
int add(){
return this.x+this.y;
}
int add1(){
return super.x+super.y;
}
}
如果创建对象调用了add方法,得到的结果就是50,而使用add1方法,就会得到5的结果。
接口与抽象类的异同:
相同点:
1.都可包含只声明而不实现的方法,都必须在子类中实现这些方法。
2.都不能用new关键字创建这两种类型的对象。
3.都可以具有public属性。
不同点:
1.在抽象类中,方法声明时必须加abstract关键字,而在接口中不需要。
2.在抽象类中,除包含只声明而不实现的方法外,还可以定义实例变量和方法,而在接口中,只能定义常量和包含
只声明而不实现的方法。
3.接口允许多继承,类仅支持单继承。
特殊类:final类不能被继承,v 2305
+3即不能有子类。