复用类看着标题都不知道是什么,再加上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编程思想第五版笔记】第八章复用(更新中)面向过程和面向对象复用的区别:组合的语法关于上面的程序的解析初始化引用有四种方法:继承语法 更新自2020.04.22 代码复⽤是⾯向对象编程(OOP)最具魅⼒的原因之⼀...
StudyJavaJava Basics1.java 基础学习2.java变成思想和java核心技术整理3.java8等java新特性学习整理###Java编程思想第1章 对象导论1.1 抽象过程1.2 每个对象都有一个接口1.3 每个对象都提供服务1.4 被隐藏的具体...
java对象的引用,控制程序流,初始化和清除,封装,复用类,多态,接口和内部类,异常处理try——catch,类的检查,对象的集合,i/o系统,并发,分析与设计,对象的传递和返回
java编程think第4版完整源码加python测试框架,不难看出这是一本经典之作。本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、JavaI/O...
有关java的编程思想 包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器等!
java中万事万物皆为对象,类和对象是java编程的核心。类可以看成是属性和行为的抽象、封装。必须先有概念才有实物,必须定义类才有对象,类是同一类型对象的模板。 面向对象语言,万事万物,皆为对象。面向对象思维...
Java函数式编程是指利用函数式编程的思想和特性来开发Java应用程序。函数式编程强调将计算过程视为数学函数的求值,侧重于函数的组合、映射、过滤等操作,同时避免了可变状态和可变数据。 在Java中,函数式编程主要...
thinkingjava 编程思想 3、操作符 4、控制执行流程 5、初始化与清理 6、访问权限控制 7、复用类 8、多态 9、接口 10、内部类
第15章 泛型 第16章 数组 第17章 容器深入研究 第18章 Java I/O系统 第19章 枚举类型 第20章 注解 第21章 并发 第22章 图形化用户界面 附录A 补充材料 可下载的补充材料 Thinking in C:Java的基础 Java编程思想 ...
第7章 复用类 第8章 多态 第9章 接口 第10章 内部类 第11章 持有对象 第12章 通过异常处理错误 第13章 字符串 第14章 类型信息 第15章 泛型 第16章 数组 第17章 容器深入研究 第18章 Java I/O系统 第19章 枚举类型 ...
理解了Java的这种面向对象程序设计的根本思想之后,在以后的编程过程中,就应当个构造人们容易理解的更接近于真实物理世界物体的对象。 Java面向对象程序设计的过程非常简单。这里介绍一种自顶向下的程序设计方法,...
java 编程思想 本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目...
是面向对象的高级编程语言,类和对象是 Java 程序的构成核心。Java语言提供类,接口和继承等面向对象特性,为了简单起见,只支持类之间的单继承,但支持接口间的多继承,并支持类与接口之间的实现机制。面向对象是一...
JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做...
5.3.2 Java抽象思想的实现122 5.4 封装124 5.4.1 对象封装的概念理解124 5.4.2 类的理解125 5.4.3 Java类模板创建125 5.4.4 Java中对象的创建和使用127 5.5 属性130 5.5.1 属性的定义130 5.5.2 变量131 5.6 方法132 ...
1、 在Java程序中复用以前写过的C/C++代码。 2、 自己实现一个java虚拟机 3、 学习不同语言如何进行协作,尤其是如何实现垃圾回收和多线程。 4、 把一个虚拟机实现整合到用C/C++写的程序中。 本书是写给开发者的。...
同时,该系统还采用了面向对象的编程思想,提高了代码的复用性和可读性。即采用了Java编程语言,使用了Javaswing技术实现GUI图形化界面的设计,并通过jdbc连接MySQL数据库进行数据的存储和检索。 资源中包括该药品...
源码中并未采取面向接口、继承等思想来实现工具方法的复用,笔者认为不应该将编程语言的学习成本带入数据结构,笔者的意愿是:学习者拿到每个数据结构,都可以做到信手使用,而不是还要反复查询其继承、实现结构。...
运行时,感觉很快速,这就需要设计模式支撑2) 设计模式包含了大量的编程思想,讲授和真正掌握并不容易,网上的设计模式课程不少,大多讲解的比较晦涩,没有真实的应用场景和框架源码支撑,学习后,只知其形,不知其神...
8.2 编程能力,代码控制能力,复用与接口,轮子发明与使用 170 8.3 OO,模板,设计模式与设计 171 8.4 设计能力和程序员能力模型 172 8.4 自上而下设计和自下而上设计 173 8.5 大中型软件和复用与逻辑达成 177 8.6 ...