`
百合不是茶
  • 浏览: 354913 次
社区版块
存档分类
最新评论

java编程思想--复用类

阅读更多

      复用类看着标题都不知道是什么,再加上java编程思想翻译的比价难懂,所以知道现在才看这本软件界的奇书

 

一:组合语法:就是将对象的引用放到新类中即可

    代码:

   

package com.wj.reuse;

/**
 * 
 * @author Administrator 组合类的使用
 */
public class SpringkSystem {
	private String value1, value2, value3, value4;
	private int i;
	private float f;
	//创建对象
	private WaterSource source = new WaterSource();
	//打印输出
	@Override
	public String toString() {

		return 
            "value1=" + value1 + "value2=" + value2  
             + "value3=" + value3+ "value4=" + value4 + "\r\n"             + "i=" + i + "f=" + f + "\r\n"
            + "source=" + source;//对象
	}

	//主函数
	public static void main(String[] args) {
		//创建对象
		SpringkSystem system = new SpringkSystem();
		//输出对象,java中默认输出system.toString();
		//系统会自动的加上toString()
		System.out.println(system);
	}
}

// 内部类
class WaterSource {
	//
	private String s;
      //构造函数
	public WaterSource() {
		System.out.println("WaterSource()");
		s = "Constructed";
	}
	@Override//重写toString()方法
	public String toString() {
		return s;
	}
}

 WaterSource()

 

value1=nullvalue2=nullvalue3=nullvalue4=null

i=0f=0.0

source=Constructed

 

toString();将对象编程一个字符串类型的数据,否则打印的是对象的地址

 

 

二:继承语法

 在java oop中创建的类如果没有使用继承,系统会默认的继承Object类

 

class A{

}

 

class A extends Object{

}

两者都是创建A类 

 

a,继承语法初始化基类

   

package com.wj.reuse;

/**
 * 
 * @author Administrator 继承语法,初始化基类,带参数的构造器
 */

public class DemoExtends extends DemoExtendsMain {

	public static void main(String[] args) {
		//创建对象
		new DemoExtends();
	}
}

//创建基类
class DemoExtendsMain {
	//初始化基类
	DemoExtendsMain() {
		System.out.println("初始化基类");
	}
}

 运行结果: 

 

     初始化基类

 

b:继承语法代参数的构造器

 

package com.wj.reuse;

/**
 * 
 * @author Administrator 继承语法,初始化基类,带参数的构造器
 */

public class DemoExtends extends DemoExtendsMain {

	DemoExtends(int i) {
		super(i);
		// TODO Auto-generated constructor stub
	}

	public static void main(String[] args) {
		//创建对象
		new DemoExtends(5);
	}
}

//创建基类
class DemoExtendsMain {
	//初始化基类
	DemoExtendsMain(int i) {
		System.out.println("带参数的构造器");
	}
}

 运行结果:

 

    带参数的构造器

 

 

三:代理  作者讲的代理就是继承和组合的中庸之道

 

   代理模式的定义:对其他对象提供一种代理以控制对这个对象的访问,相当于操作私有方法

 

a,没有代理模式的:

 

package com.wj.reuse;

/*8
 * java的代理模式的使用
 */
public class ProxyClass extends ProxySon {
	public static void main(String[] args) {
		new ProxyClass().get();
	}

}

// 基类
class ProxySon {
	public void get() {
		System.out.println("基类的方法");
	}
}

 运行结果:

 

  基类的方法

 

b,有代理模式的

 

package com.wj.reuse;

/*8
 * java的代理模式的使用,
 *代理模式 解决了在子类中不能直接操作 而是通过间接的调用,保证了数据的安全性
 */
public class ProxyClass extends ProxySon {
	public static void main(String[] args) {
		// 创建对象,调用代理类的get()方法
		new ProxyClass().Proxyget();
	}

}

// 基类
class Son {
	public void get() {
		System.out.println("基类的方法");
	}
}

// 定义代理的类
class ProxySon {
	// 创建基类
	private Son son = new Son();

	// 创建代理类的方法
	public void Proxyget() {
		// 调用基类的方法
		son.get();
	}
}

 运行结果:

 

   基类的方法

 

分析:

    在没有代理模式中,继承Son类后直接调用get()方法,不利于数据的安全

 

   有代理模式中,使用代理类来操作基类的数据,子类继承代理类,子类在操作中不能够直接操作到数据,必须通过代理类来操作

 

 

四:重写和重载

 

重写:重新覆盖父类的方法

 

package com.wj.reuse;

/*
 * 重写和重载的简单使用
 */

class Demo {// 定义基类
	String s;// 接收参数

	// 定义方法
	public void getSize(String str) {
		s = str;
		System.out.println(s);// 打印
	}
}

// 重写Demo类中的getSize()方法
public class OvverideDemo extends Demo {
	String name;

	@Override
	public void getSize(String name) {
		// super.getSize(str);super是调用父类中的getSize()方法
		this.name = name;
		System.out.println(name);
	}

	// 创建主函数
	public static void main(String[] args) {
		// 创建对象,调用重写的方法
		new OvverideDemo().getSize("java");
	}
}

 运行结果:java

 

 

OvverideDemo继承Demo,并且重写Demo中的getSize()方法;这就是重写

 

重载:方法名相同,参数不同

package com.wj.reuse;

/*8
 * 重载 ,方法名相同,参数不同
 */
//定义基类
class loadeDemo {
	String name;
	int age;
   //定义三个重载的方法
	public void getPeople(String name) {
		this.name = name;
		System.out.println("name:"+name);
	}

	public void getPeople(int age) {
		this.age = age;
		System.out.println("age:"+age);
	}

	public void getPeople(String name, int age) {
		this.name = name;
		this.age = age;
		System.out.println("name:"+name+"   age:"+age);
	}
}

//重载
public class Overloade extends loadeDemo{

	public static void main(String[] args) {
		//创建对象,调用基类的getSize()方法
		new Overloade().getPeople("java",90);
	}
}

 

运行结果:

name:java   age:90

 

五:final关键字

final 类 不能被继承 
final 方法 不能被子类覆盖,但可以继承

package com.wj.reuse;

/*
 * 重写和重载的简单使用
 */

class Demo {// 定义基类
	String s;// 接收参数

	// 使用final 定义方法
	public final void getSize(String str) {
		s = str;
		System.out.println(s);// 打印
	}
}

// 重写Demo类中的getSize()方法
public class OvverideDemo extends Demo {
	String name;
	@Override //基类中使用final定义的方法,子类中是不可以重写(覆盖)
	public void getSize(String name) {//有错
		// super.getSize(str);super是调用父类中的getSize()方法
		this.name = name;
		System.out.println(name);
	}

	// 创建主函数
	public static void main(String[] args) {
		// 创建对象,调用重写的方法
		new OvverideDemo().getSize("java");
	}
}

 
final 变量 只能有一次赋值,赋值后不能改变

 

 

final 不能用来修饰构造方法

 

 

六:继承与初始化

package com.wj.reuse;

//类的继承与初始化

class InitA {// 定义基类

	public InitA() {// 定义构造方法
		System.out.println("InitA");
	}

	// 定义i的值
	public static int i = point();

	public static int point() {
		System.out.println("InitA+point");
		return 1;
	}

}

// 继承A
class InitB extends InitA {
	// 初始化
	public InitB() {
		System.out.println("InitB");
	}

	{
		System.out.println("InitB+20");
	}
	// static代码块
	static {
		System.out.println("InitB+static");
	}

}

// 继承InitB
public class InitDemo extends InitB {
	// 构造方法
	public InitDemo() {
		System.out.println("InitDemo");
	}

	// 代码块输出
	{
		System.out.println("InitDemo+20");
	}

	public static void main(String[] args) {
		// 整型输出
		int n = 10;
		System.out.println(n);
		// 创建对象 输出
		new InitDemo();
		System.out.println("main");
	}
}

 

运行结果:

InitA+point

InitB+static

10

InitA

InitB+20

InitB

InitDemo+20

InitDemo

 

main

 

程序运行时的执行顺序:左边的最先执行  

     static和static代码块-->属性-->非静态代码块--->构造方法-->mian方法中的输出语句-->方法

 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    《java编程思想》_java编程思想_java编程思想_ThinkinginJava_mileefx_

    《Java编程思想》是Java程序员领域的一本经典之作,由Bruce Eckel撰写,以其深入浅出的讲解方式和丰富的实例闻名。这本书对于想要深入理解Java语言的人来说,是一份宝贵的资源。"Thinking in Java",直译为“思考...

    java编程思想(pdf格式)

    《Java编程思想》是Java开发领域的一本经典著作,它深入浅出地介绍了Java语言的核心概念和编程技术。这本书以其详尽的解释、丰富的实例和严谨的逻辑深受程序员喜爱。以下将围绕标题和描述中的知识点进行详细阐述: ...

    C++编程思想-英文版

    这本书全面、深入地介绍了C++语言,不仅覆盖了基础语法,还包括了高级特性和设计模式,旨在帮助读者理解C++的核心理念和编程思想。 1. **C++概述**:C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅...

    java 编程思想.txt

    根据提供的文件信息,我们可以深入探讨《Java编程思想》这一主题中的关键知识点,这些知识点主要集中在类、对象、封装性、继承、多态等核心概念上。 ### Java编程思想概述 《Java编程思想》这本书深入浅出地介绍了...

    Java 编程思想中文第三版(PDF)

    《Java编程思想》是Java开发领域的一本经典著作,由Bruce Eckel撰写,中文第三版则是针对中国读者的翻译版本,旨在帮助读者深入理解和掌握Java编程语言。这本书以清晰、简洁的语言介绍了Java的核心概念和技术,适合...

    java编程思想参考答案

    《Java编程思想》是 Bruce Eckel 编著的一本经典Java教程,这本书深入浅出地讲解了Java语言的核心概念和编程技巧。书中的练习题旨在帮助读者巩固所学知识,提高编程技能。以下是对这些练习题及参考答案的详细解析: ...

    java 编程思想java初学

    《Java编程思想》是Java初学者的一本经典教材,它以其深入浅出的讲解和丰富的实例,深受读者喜爱。本书全面覆盖了Java的基础知识,包括语法特性、面向对象编程概念、异常处理、集合框架、多线程、网络编程等多个方面...

    java编程思想书本示例和习题答案

    《Java编程思想》是 Bruce Eckel 的经典著作,这本书深入浅出地介绍了Java语言的核心概念和技术,被广大Java程序员视为学习Java的必备参考书。这个压缩包包含了书中的实例代码和习题答案,对于读者理解和掌握Java...

    JAVA编程思想习题及答案

    《JAVA编程思想习题及答案》是一份针对Java编程学习者的宝贵资源,它涵盖了Java语言的核心概念、设计模式以及实际编程技巧。这份资料通过习题的形式帮助学习者深入理解和掌握Java编程思想,同时提供了解答,使学习...

    java编程思想详解

    【Java编程思想详解】 ...总的来说,Java编程思想的精髓在于理解对象如何代表现实世界中的实体,以及如何通过类和对象的交互来解决问题。通过深入学习和实践,读者能够掌握编写高效、可靠且易于维护的Java代码的技巧。

    java编程思想用到的可用文件 两个jar.zip

    例如,可能包含了一些用于演示或测试代码的辅助类,这对于理解Java编程思想中的各种设计模式和原则非常有帮助。 接下来是`pets.jar`,这个文件名暗示它可能与宠物相关的数据模型或者示例代码有关。在Java编程中,...

    java 编程思想 所有版本免费下载!!(已经删除)

    尽管提供的信息较为有限,主要集中在对“Java编程思想所有版本免费下载”的提及,但我们可以从中扩展出与Java编程相关的多个重要知识点。以下是对这些知识点的详细介绍: ### Java编程语言简介 Java是一种广泛使用...

    Java编程思想 中文文档

    《Java编程思想》是 Bruce Eckel 的经典著作,这本书深入浅出地介绍了Java语言的核心概念和技术,对于初学者和有经验的程序员来说都是极好的学习资源。中文文档的出现使得更多的中国开发者能够无障碍地理解这本权威...

    java编程思想读书笔记

    《Java编程思想》是 Bruce Eckel 的经典著作,这本书深入浅出地讲解了Java语言的核心概念和编程技术。这份读书笔记记录了读者在研读此书过程中的理解和体会,涵盖了从基础语法到高级特性的全面解析。以下是笔记中...

    java编程思想课后题答案

    《Java编程思想》是 Bruce Eckel 的经典之作,这本书深入浅出地讲解了Java语言的各个方面,对于初学者和有经验的开发者都是宝贵的资源。课后习题解答则是学习过程中不可或缺的一部分,它提供了实践和检验理论知识的...

    Java编程思想和阿里巴巴Java开发手册pdf.zip

    Java编程思想是编程领域的一本经典著作,由Bruce Eckel撰写,它深入浅出地介绍了Java语言的核心概念和编程技巧。这本书旨在帮助开发者理解面向对象编程,并提供了丰富的示例来阐述如何有效地使用Java进行程序设计。...

    java编程思想练习题答案

    《Java编程思想》是Bruce Eckel的经典之作,它深入浅出地介绍了Java语言的核心概念和技术。这本书中的练习题是学习者提升技能的重要途径,而这个压缩包提供的就是这些练习题的解答,以源码的形式保存为.java文件。...

    java 编程思想4(中文版pdf)

    《Java编程思想》是 Bruce Eckel 的经典著作,这本书深入浅出地讲解了Java语言的核心概念和编程技术,是Java程序员的重要参考书籍。中文版的出现使得更多的中国开发者能够无障碍地学习这本巨著,无需面对语言障碍。...

    JAVA编程思想第三版类包

    在这个"JAVA编程思想第三版类包"中,我们可能会看到以下知识点: 1. **类与对象**:Java是一种面向对象的语言,类是创建对象的蓝图,对象则是程序中的实例。类定义了数据(成员变量)和行为(方法)。 2. **封装**...

Global site tag (gtag.js) - Google Analytics