复用类看着标题都不知道是什么,再加上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方法中的输出语句-->方法
相关推荐
《Java编程思想》是Java程序员领域的一本经典之作,由Bruce Eckel撰写,以其深入浅出的讲解方式和丰富的实例闻名。这本书对于想要深入理解Java语言的人来说,是一份宝贵的资源。"Thinking in Java",直译为“思考...
《Java编程思想》是Java开发领域的一本经典著作,它深入浅出地介绍了Java语言的核心概念和编程技术。这本书以其详尽的解释、丰富的实例和严谨的逻辑深受程序员喜爱。以下将围绕标题和描述中的知识点进行详细阐述: ...
这本书全面、深入地介绍了C++语言,不仅覆盖了基础语法,还包括了高级特性和设计模式,旨在帮助读者理解C++的核心理念和编程思想。 1. **C++概述**:C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅...
根据提供的文件信息,我们可以深入探讨《Java编程思想》这一主题中的关键知识点,这些知识点主要集中在类、对象、封装性、继承、多态等核心概念上。 ### Java编程思想概述 《Java编程思想》这本书深入浅出地介绍了...
《Java编程思想》是Java开发领域的一本经典著作,由Bruce Eckel撰写,中文第三版则是针对中国读者的翻译版本,旨在帮助读者深入理解和掌握Java编程语言。这本书以清晰、简洁的语言介绍了Java的核心概念和技术,适合...
《Java编程思想》是 Bruce Eckel 编著的一本经典Java教程,这本书深入浅出地讲解了Java语言的核心概念和编程技巧。书中的练习题旨在帮助读者巩固所学知识,提高编程技能。以下是对这些练习题及参考答案的详细解析: ...
《Java编程思想》是Java初学者的一本经典教材,它以其深入浅出的讲解和丰富的实例,深受读者喜爱。本书全面覆盖了Java的基础知识,包括语法特性、面向对象编程概念、异常处理、集合框架、多线程、网络编程等多个方面...
《Java编程思想》是 Bruce Eckel 的经典著作,这本书深入浅出地介绍了Java语言的核心概念和技术,被广大Java程序员视为学习Java的必备参考书。这个压缩包包含了书中的实例代码和习题答案,对于读者理解和掌握Java...
《JAVA编程思想习题及答案》是一份针对Java编程学习者的宝贵资源,它涵盖了Java语言的核心概念、设计模式以及实际编程技巧。这份资料通过习题的形式帮助学习者深入理解和掌握Java编程思想,同时提供了解答,使学习...
【Java编程思想详解】 ...总的来说,Java编程思想的精髓在于理解对象如何代表现实世界中的实体,以及如何通过类和对象的交互来解决问题。通过深入学习和实践,读者能够掌握编写高效、可靠且易于维护的Java代码的技巧。
例如,可能包含了一些用于演示或测试代码的辅助类,这对于理解Java编程思想中的各种设计模式和原则非常有帮助。 接下来是`pets.jar`,这个文件名暗示它可能与宠物相关的数据模型或者示例代码有关。在Java编程中,...
尽管提供的信息较为有限,主要集中在对“Java编程思想所有版本免费下载”的提及,但我们可以从中扩展出与Java编程相关的多个重要知识点。以下是对这些知识点的详细介绍: ### Java编程语言简介 Java是一种广泛使用...
《Java编程思想》是 Bruce Eckel 的经典著作,这本书深入浅出地介绍了Java语言的核心概念和技术,对于初学者和有经验的程序员来说都是极好的学习资源。中文文档的出现使得更多的中国开发者能够无障碍地理解这本权威...
《Java编程思想》是 Bruce Eckel 的经典著作,这本书深入浅出地讲解了Java语言的核心概念和编程技术。这份读书笔记记录了读者在研读此书过程中的理解和体会,涵盖了从基础语法到高级特性的全面解析。以下是笔记中...
《Java编程思想》是 Bruce Eckel 的经典之作,这本书深入浅出地讲解了Java语言的各个方面,对于初学者和有经验的开发者都是宝贵的资源。课后习题解答则是学习过程中不可或缺的一部分,它提供了实践和检验理论知识的...
Java编程思想是编程领域的一本经典著作,由Bruce Eckel撰写,它深入浅出地介绍了Java语言的核心概念和编程技巧。这本书旨在帮助开发者理解面向对象编程,并提供了丰富的示例来阐述如何有效地使用Java进行程序设计。...
《Java编程思想》是Bruce Eckel的经典之作,它深入浅出地介绍了Java语言的核心概念和技术。这本书中的练习题是学习者提升技能的重要途径,而这个压缩包提供的就是这些练习题的解答,以源码的形式保存为.java文件。...
《Java编程思想》是 Bruce Eckel 的经典著作,这本书深入浅出地讲解了Java语言的核心概念和编程技术,是Java程序员的重要参考书籍。中文版的出现使得更多的中国开发者能够无障碍地学习这本巨著,无需面对语言障碍。...
在这个"JAVA编程思想第三版类包"中,我们可能会看到以下知识点: 1. **类与对象**:Java是一种面向对象的语言,类是创建对象的蓝图,对象则是程序中的实例。类定义了数据(成员变量)和行为(方法)。 2. **封装**...