子类与继承

使用关键字extends来定义一个类的子类

在java核心技术卷一,第五章继承,5.14节 “阻止继承:final类和final方法”。

如果类被 final 修饰了,那么是无法继承的,例如 api中的 String类。

如果方法被 final 修饰了,这个方法无法被继承(不能被覆盖)。

private修饰的成员也是无法被继承的。这个很好理解,private:私有。只提供给本类其他方法调用的,不暴露给本类以外的其他对象,自然不能被子类继承到。

1)子类是不继承父类的static变量和方法的。因为这是属于类本身的。但是子类是可以访问的。 

2)子类和父类中同名的static变量和方法都是相互独立的,并不存在任何的重写的关系。

子类可以隐藏从父类继承的成员变量和方法,如果在子类中想使用被子类隐藏的成员变量或方法就可以使用关键字super。比如super.x、super.play()就是访问和调用被子类隐藏的成员变量x和方法play()。

 子类不继承父类的构造方法,因此,子类如果想使用父类的构造方法,必须在子类的构造方法中使用,并且必须使用关键字super来表示,而且super必须是子类构造方法中的头一条语句。

final关键字可以修饰类、成员变量和方法中的局部变量。

可以使用final将类声明为final类。final类不能被继承,即不能有子类。

如果用final修饰父类中的一个方法,那么这个方法不允许子类重写

如果成员变量或局部变量被修饰为final的,就是常量。

假设,A类是B类的父类,当用子类创建一个对象,并把这个对象的引用放到父类的对象中时,比如:

 a;

a=new B();

 或

A a;

B b=new B();

a=b;

这时,称对象a是对象b的上转型对象。

1.上转型对象不能操作子类新增的成员变量;不能调用子类新增的方法。

2.上转型对象可以访问子类继承或隐藏的成员变量,也可以调用子类继承的方法或子类重写的实例方法。上转型对象操作子类继承的方法或子类重写的实例方法,其作用等价于子类对象去调用这些方法。因此,如果子类重写了父类的某个实例方法后,当对象的上转型对象调用这个实例方法时一定是调用了子类重写的实例方法。


多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能行为。

在设计一个程序时,可以通过在abstract类中声明若干个abstract方法,表明这些方法在整个系统设计中的重要性,方法体的内容细节由它的非abstract子类去完成。

使用多态进行程序设计的核心技术之一是使用上转型对象,即将abstract类声明对象作为其子类的上转型对象,那么这个上转型对象就可以调用子类重写的方法。

所谓面向抽象编程,是指当设计某种重要的类时,不让该类面向具体的类,而是面向抽象类,即所设计类中的重要数据是抽象类声明的对象,而不是具体类声明的对象

你可能感兴趣的:(子类与继承)