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

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编程思想第五版笔记】第八章复用(更新中)面向过程和面向对象复用的区别:组合的语法关于上面的程序的解析初始化引用有四种方法:继承语法 更新自2020.04.22 代码复⽤是⾯向对象编程(OOP)最具魅⼒的原因之⼀...

    StudyJava:Java 基础学习(java编程思想和java技术核心卷)

    StudyJavaJava Basics1.java 基础学习2.java变成思想和java核心技术整理3.java8等java新特性学习整理###Java编程思想第1章 对象导论1.1 抽象过程1.2 每个对象都有一个接口1.3 每个对象都提供服务1.4 被隐藏的具体...

    java 编程思想 (多态,接口和内部类)

    java对象的引用,控制程序流,初始化和清除,封装,复用类,多态,接口和内部类,异常处理try——catch,类的检查,对象的集合,i/o系统,并发,分析与设计,对象的传递和返回

    java编程think第4版完整源码加python测试框架

    java编程think第4版完整源码加python测试框架,不难看出这是一本经典之作。本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、JavaI/O...

    Java 编程思想

    有关java的编程思想 包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器等!

    Java GUI编程.docx

    java中万事万物皆为对象,类和对象是java编程的核心。类可以看成是属性和行为的抽象、封装。必须先有概念才有实物,必须定义类才有对象,类是同一类型对象的模板。 面向对象语言,万事万物,皆为对象。面向对象思维...

    基础深化和提高-java函数式编程

    Java函数式编程是指利用函数式编程的思想和特性来开发Java应用程序。函数式编程强调将计算过程视为数学函数的求值,侧重于函数的组合、映射、过滤等操作,同时避免了可变状态和可变数据。 在Java中,函数式编程主要...

    thinkingjava:编程思想

    thinkingjava 编程思想 3、操作符 4、控制执行流程 5、初始化与清理 6、访问权限控制 7、复用类 8、多态 9、接口 10、内部类

    Thinking in java4(中文高清版)-java的'圣经'

    第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章 枚举类型 ...

    Get清风2048小游戏-Java-课程设计报告书.docx

    理解了Java的这种面向对象程序设计的根本思想之后,在以后的编程过程中,就应当个构造人们容易理解的更接近于真实物理世界物体的对象。 Java面向对象程序设计的过程非常简单。这里介绍一种自顶向下的程序设计方法,...

    《Thinking In Java》中文版

    java 编程思想 本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目...

    java实现校园一卡通源码-Core-Java-Concept:核心-Java-概念

    是面向对象的高级编程语言,类和对象是 Java 程序的构成核心。Java语言提供类,接口和继承等面向对象特性,为了简单起见,只支持类之间的单继承,但支持接口间的多继承,并支持类与接口之间的实现机制。面向对象是一...

    Java学习笔记(必看经典)

    JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做...

    java基础案例与开发详解案例源码全

    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 ...

    Java程序中JNI的编程指南

    1、 在Java程序中复用以前写过的C/C++代码。 2、 自己实现一个java虚拟机 3、 学习不同语言如何进行协作,尤其是如何实现垃圾回收和多线程。 4、 把一个虚拟机实现整合到用C/C++写的程序中。 本书是写给开发者的。...

    【基于Java Swing设计药品信息管理系统】

    同时,该系统还采用了面向对象的编程思想,提高了代码的复用性和可读性。即采用了Java编程语言,使用了Javaswing技术实现GUI图形化界面的设计,并通过jdbc连接MySQL数据库进行数据的存储和检索。 资源中包括该药品...

    java笔试题编程-over-algorithm:数据结构与算法:[进度40%]以C语言严谨描述数据结构与算法,同时以Go、JavaScrip

    源码中并未采取面向接口、继承等思想来实现工具方法的复用,笔者认为不应该将编程语言的学习成本带入数据结构,笔者的意愿是:学习者拿到每个数据结构,都可以做到信手使用,而不是还要反复查询其继承、实现结构。...

    全新150集通俗易懂的Java设计模式

    运行时,感觉很快速,这就需要设计模式支撑2) 设计模式包含了大量的编程思想,讲授和真正掌握并不容易,网上的设计模式课程不少,大多讲解的比较晦涩,没有真实的应用场景和框架源码支撑,学习后,只知其形,不知其神...

    编程新手真言......

    8.2 编程能力,代码控制能力,复用与接口,轮子发明与使用 170 8.3 OO,模板,设计模式与设计 171 8.4 设计能力和程序员能力模型 172 8.4 自上而下设计和自下而上设计 173 8.5 大中型软件和复用与逻辑达成 177 8.6 ...

Global site tag (gtag.js) - Google Analytics