前言:基本是为了我自己看的一些我容易忘记的东西

继承:

  • 继承是一种由已有的类创建新类的机制,由继承得到的类称为子类,被继承的类称为父类。
  • 利用继承有利于实现代码的重复使用,子类只需要添加新的代码功能即可,JAVA不支持多重继承,即子类只可以有一个父类。
  • 继承的定义:
  • 子类的成员中一部分是子类自己声明定义的,另一部分是从他的父类继承的。
  • 子类继承父类的成员变量作为自己的一个成员变量
  • 子类继承父类的方法作为子类中的一个方法
  • 访问权限的问题:  

继承java子类调用父类的方法 java子类继承父类变量_子类

  • default是默认的权限。
  • 如果子类与父类在同一个包中,那么子类自然的继承了其父类中的不是private的成员变量作为自己的成员变量,方法也一样,继承的成员或方法的访问权限不变。
  • 如果不在同一个包中,那么子类只能继承父类的protected、public成员变量和方法,继承的成员或方法的访问权限不变。

子类对象:

  •  当用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法,如果子类没有指明调用那个构造方法,子类就调用父类的不带参数的构造方法。
  • 将子类声明的成员变量作为子类对象的成员变量。
  • 父类的成员变量也都分配了内存空间,但只将其中一部分(继承的那部分)作为子类对象的成员变量

成员变量的隐藏和方法的重写:

  • 当子类中定义了和父类同名的成员变量时,子类就隐藏了继承的成员变量。
  • 方法重写是指:子类中定义一个方法,并且这个方法的名字、放回类型、参数个数和类型与从父类中继承的方法完全相同。
  • 如果子类想使用被隐藏的方法就必须使用关键字super;

super 关键字:

  1. 使用super调用父类的构造方法。
  2. 使用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();
    }
}

继承java子类调用父类的方法 java子类继承父类变量_子类_02

 

 final类和final方法:

  • final类不能被继承,不能有子类;
  • JAVA提供的String 类他对于编译器和解释器的正常运行有着很重要的作用,对他不能轻易改变,因此他被修饰为final类。
  • 如果一个方法被修饰为final方法,则这个方法不能被重写,即不允许子类重写隐藏继承的final方法。

对象的上转型对象:

  • A a;  B b=new B(); a=b;
  • 则称对象a为对象b的上转型对象
  • 上转型对象不能操作子类声明定义的成员变量,不能使用子类定义的方法;
  • 上转型对象可以代替子类对象去调用子类重写的实例方法;
  • 上转型对象可以调用子类继承的成员变量和隐藏的成员变量;
  • 可以将上转型对象在强制转换成一个子类对象,这是子类对象又具有了子类的所有属性和功能;