昆明java培训
达内昆明广州春城路

18487146383

热门课程

Java继承

  • 时间:2016-11-04
  • 发布:昆明Java培训
  • 来源:java教程

昆明Java培训机构的老师知道,在计划继承时一个比较好的规则是:将所有类的成员字段都设为private,并将所有的方法都设置为public(protected成员也与允许衍生出来的类访问它)。

Java提供了一个super关键字用来引用父类中的相关方法。

进行继承时,我们并不限于只能使用基础类的方法。亦可在衍生出来的类里加入自己的新方法。

创建衍生类(继承类)的一个对象时,它在其中包含了一个基础类(父类)的一个“子对象”。

基础类子对象应该正确地初始化,而且只有一种方法能保证这一点:在构造函数中执行初始化,通过调用基础类的构造函数,后者有足够的能力和权限来执行对基础类的初始化。在衍生类(继承类)的构建器中,Java会自动插入对基础类构建器的调用。

/**

* Created by xfyou on 2016/11/1.

*/

class Cleanser {

private String s = new String("Cleanser");

public void append(String a) {

s += a;

}

public void dilute() {

append(" dilute()");

}

public void apply() {

append(" apply()");

}

public void scrub() {

append(" scrub()");

}

public void print() {

System.out.println(s);

}

public static void main(String[] args) {

Cleanser x = new Cleanser();

x.dilute();

x.apply();

x.scrub();

x.print();

}

}

public class Detergent extends Cleanser {

// Change a method

public void scrub() {

append("Detergent.scrub()");

}

// Add methods to the interface:

public void foam(){

append("foam()");

}

// Test the new class

public static void main(String[] args) {

Detergent x = new Detergent();

x.dilute();

x.apply();

x.scrub();

x.foam();

x.print();

System.out.println("Testing base class:");

Cleanser.main(args);

}

}

当基础类中用含有自定义了一个含有自变量的构造函数时(覆盖了默认的构造函数),继承类的构造函数中必须明确地显示的对父类构造函数的调用。

public class Chess extends BoardGame {

public Chess() {

super(11);

System.out.println("Chess constuctor");

}

public static void main(String[] args) {

Chess x = new Chess();

}

}

class Game{

public Game(int i) {

System.out.println("Game constructor");

}

}

class BoardGame extends Game{

public BoardGame(int i) {

super(i);

System.out.println("BoardGame constructor");

}

}

继承与合成结合起来使用:

public class PlaceSetting extends Custom {

Spoon sp;

Fork frk;

Knife kn;

DinnerPlate pl;

public PlaceSetting(int i) {

super(i + 1);

sp = new Spoon(i + 2);

frk = new Fork(i + 3);

kn = new Knife(i + 4);

pl = new DinnerPlate(i + 5);

System.out.println("PlaceSetting constructor");

}

public static void main(String[] args) {

PlaceSetting x = new PlaceSetting(9);

}

}

class Plate {

public Plate(int i) {

System.out.println("Plate constructor");

}

}

class DinnerPlate extends Plate {

public DinnerPlate(int i) {

super(i);

System.out.println("DinnerPlate constructor");

}

}

class Utensil {

public Utensil(int i) {

System.out.println("Utensil constructor");

}

}

class Spoon extends Utensil {

public Spoon(int i) {

super(i);

System.out.println("Spoon constructor");

}

}

class Fork extends Utensil {

public Fork(int i) {

super(i);

System.out.println("Fork constructor");

}

}

class Knife extends Utensil {

public Knife(int i) {

super(i);

System.out.println("Knife constructor");

}

}

class Custom {

public Custom(int i) {

System.out.println("Custom constructor");

}

}

学Java开发就到昆明达内Java培训班!了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

上一篇:JAVA设计模式之模板模式
下一篇:dubbo服务的启动检查

dubbo服务的线程模型

dubbo服务的负载均衡

dubbo服务的集群容错

dubbo服务的启动检查

选择城市和中心
贵州省

广西省

海南省

台湾