java继承总结(二)

java学习笔记

1.继承

关键字:

extends

Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类.

eg:

public class Penguin  extends  Animal

{

}

implements

使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。

eg :

public interface A {

    public void eat();

    public void sleep();

}

public interface B {

    public void show();

}

public class C implements A,B {

}

2.super 与 this 关键字

super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。

this关键字:指向自己的引用。

3. final关键字

final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:

声明类:

final class 类名 {//类体}

声明方法:

修饰符(public/private/default/protected) final 返回值类型 方法名(){//方法体}

4.构造器

子类不能继承父类的构造器(构造方法或者构造函数),但是父类的构造器带有参数的,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的参数列表。

如果父类有无参构造器,则在子类的构造器中用super调用父类构造器不是必须的,如果没有使用super关键字,系统会自动调用父类的无参构造器。

实例

class SuperClass {

  private int n;

  SuperClass(){

    System.out.println("SuperClass()");

  }

  SuperClass(int n) {

    System.out.println("SuperClass(int n)");

    this.n = n;

  }

}

class SubClass extends SuperClass{

  private int n;

  

  SubClass(){

    super(300);

    System.out.println("SubClass");

  }  

  public SubClass(int n){

    System.out.println("SubClass(int n):"+n);

    this.n = n;

  }

}

public class TestSuperSub{

  public static void main (String args[]){

    SubClass sc = new SubClass();

    SubClass sc2 = new SubClass(200);

  }

}

输出结果为:

SuperClass(int n)

SubClass

SuperClass()

SubClass(int n):200

修饰符

    default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

    private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

    public : 对所有类可见。使用对象:类、接口、变量、方法

    protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

1.声明为私有访问类型的变量只能通过类中公共的 getter 方法被外部类访问。2.Private 访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据。

3.如果几个相互访问的 public 类分布在不同的包中,则需要导入相应 public 类所在的包。由于类的继承性,类所有的公有方法和变量都能被其子类继承。

4.被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问,也能够被不同包中的子类访问。

protected 访问修饰符不能修饰类和接口,方法和成员变量能够声明为 protected,但是接口的成员变量和成员方法不能声明为 protected

子类能访问 protected 修饰符声明的方法和变量,这样就能保护不相关的类使用这些方法和变量。

    父类中声明为 public 的方法在子类中也必须为 public

    父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private

父类中声明为 private 的方法,不能够被继承。

非访问修饰符

为了实现一些其他的功能,Java 也提供了许多非访问修饰符。

static 修饰符,用来修饰类方法和类变量。

final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

abstract 修饰符,用来创建抽象类和抽象方法。

synchronized volatile 修饰符,主要用于线程的编程。

 

 

原文地址:https://www.cnblogs.com/kellyPan/p/7821729.html