前言:基本是为了我自己看的一些我容易忘记的东西
继承:
- 继承是一种由已有的类创建新类的机制,由继承得到的类称为子类,被继承的类称为父类。
- 利用继承有利于实现代码的重复使用,子类只需要添加新的代码功能即可,JAVA不支持多重继承,即子类只可以有一个父类。
- 继承的定义:
- 子类的成员中一部分是子类自己声明定义的,另一部分是从他的父类继承的。
- 子类继承父类的成员变量作为自己的一个成员变量
- 子类继承父类的方法作为子类中的一个方法
- 访问权限的问题:
- default是默认的权限。
- 如果子类与父类在同一个包中,那么子类自然的继承了其父类中的不是private的成员变量作为自己的成员变量,方法也一样,继承的成员或方法的访问权限不变。
- 如果不在同一个包中,那么子类只能继承父类的protected、public成员变量和方法,继承的成员或方法的访问权限不变。
子类对象:
- 当用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法,如果子类没有指明调用那个构造方法,子类就调用父类的不带参数的构造方法。
- 将子类声明的成员变量作为子类对象的成员变量。
- 父类的成员变量也都分配了内存空间,但只将其中一部分(继承的那部分)作为子类对象的成员变量
成员变量的隐藏和方法的重写:
- 当子类中定义了和父类同名的成员变量时,子类就隐藏了继承的成员变量。
- 方法重写是指:子类中定义一个方法,并且这个方法的名字、放回类型、参数个数和类型与从父类中继承的方法完全相同。
- 如果子类想使用被隐藏的方法就必须使用关键字super;
super 关键字:
- 使用super调用父类的构造方法。
- 使用super操作被隐藏的成员变量和方法。
package Test;
import java.util.Scanner;
class father{
public void show(){
System.out.println("father say");
}
}
class child extends father{
public void show(){
super.show();
System.out.println("child say");
}
}
public class Test {
public static void main(String[] args) {
child c1=new child();
c1.show();
}
}
final类和final方法:
- final类不能被继承,不能有子类;
- JAVA提供的String 类他对于编译器和解释器的正常运行有着很重要的作用,对他不能轻易改变,因此他被修饰为final类。
- 如果一个方法被修饰为final方法,则这个方法不能被重写,即不允许子类重写隐藏继承的final方法。
对象的上转型对象:
- A a; B b=new B(); a=b;
- 则称对象a为对象b的上转型对象
- 上转型对象不能操作子类声明定义的成员变量,不能使用子类定义的方法;
- 上转型对象可以代替子类对象去调用子类重写的实例方法;
- 上转型对象可以调用子类继承的成员变量和隐藏的成员变量;
- 可以将上转型对象在强制转换成一个子类对象,这是子类对象又具有了子类的所有属性和功能;