码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础 -- 复用类(组合和继承)

时间:2019-03-17 15:55:31      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:ons   复用   类方法   main   object   null   默认   str   code   

复用类有两种实现方式。

  • 在新的类中产生现有类的对象,由于新的类是由现有类的对象所组成,所以这种方法称之为组合。
  • 采用继承实现。

一  组合语法

下面创建两个类WaterSource和SprinklerSystem。其中SprinklerSystem中包含WaterSource的对象引用。

class WaterSource {
    //如果定义时没有初始化,则基本类型会被自动初始化为0,对象引用初始化为Null
    private String s;
    WaterSource(){
        System.out.println("WaterSource()");
        s = "Constructed";
    }    
}

public class SprinklerSystem {
    private String value1,value2,value3,value4;
    //定义时初始化
    private WaterSource source = new WaterSource();
    private int i;
    private float f;
    public String toString() {
        return 
                "value1 = " + value1 + " " + 
                "value2 = " + value2 + " " +
                "value3 = " + value3 + " " +
                "value4 = " + value4 + "\n" +
                "i = " + i + "  " + "f = " + f + " " + 
                "source = " + source;
    }
    
    public static void main(String[] args) {
        SprinklerSystem sprinklers = new SprinklerSystem();
        System.out.println(sprinklers);
    }
}

运行结果如下:

WaterSource()
value1 = null value2 = null value3 = null value4 = null
i = 0  f = 0.0 source = WaterSource@15db9742

 注意:如果把一个对象以String类型输出,则默认调用的是该对象的toString()方法。

类中成员变量如果是基本基本类型则默认被初始化为零,如果是对象引用则会被初始化为null。

我们也可以自己去初始化他们:

  • 在定义成员变量的时候初始化,比如private String s1 = "happy";这意味着他们能够在构造函数被调用之前初始化。
  • 在类的构造函数中初始化;
  • 在使用这些成员变量之前初始化,这种方式称之为惰性初始化;
  • 使用实例初始化{s1 = "happy";}。

二 继承语法

Java创建一个类时,默认都是继承于Object,除非自己指定从哪个类继承。

class Cleanser{
	private String s = "Cleanser";
	public void append(String a) { s += a; }
	public void dilute(){append("  dilute()");}
	public void apply() {append("  apply()");}
	public void scrub() {append("  scrub()");}
	public String toString() {return s;}
	
	public static void main(String[] args) {
		Cleanser x = new Cleanser();
		x.dilute();
		x.apply();
		x.scrub();		
		
		System.out.println(x);
	}
	
}

public class Detergent extends Cleanser {
	public void scrub() {
		append(" Detergent.scrub()");
		super.scrub();
	}
	
	public void foam() {append(" foam()");}
	
	public static void main(String[] args) {
		Detergent x = new Detergent();
		x.dilute();
		x.apply();
		x.scrub();
		x.foam();
		System.out.println(x);
		System.out.println("Testing base class:");
		
		Cleanser.main(args);
	}

}

 运行结果如下:

Cleanser  dilute()  apply() Detergent.scrub()  scrub() foam()
Testing base class:
Cleanser  dilute()  apply()  scrub()

 看以看到继承使用的是关键字extends,如果在子类中想调用父类方法,使用super.*。

 

Java基础 -- 复用类(组合和继承)

标签:ons   复用   类方法   main   object   null   默认   str   code   

原文地址:https://www.cnblogs.com/zyly/p/10546923.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!