编程思想

Java编程思想学习(八) 内部类

雨燕双飞 提交于 2020-02-28 05:35:33
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类的定义是简单的,但是它的语法确实很是复杂,让人不是很好理解.下面就内部类做一个小结. 一.内部类的分类 总的来讲内部类分为普通内部类,匿名内部类,局部内部类,嵌套类(静态内部类)等.下面简要的介绍以下这些内部类定义的语法. (1).对于普通的内部类,就是在外围类中插入另一个类的定义.如下面的代码: 1 package lkl1; 2 3 ///封装一个包裹类 4 public class Parcel { 5 6 ///在一个类的内部定义的另一个类,称之为内部类 7 ///它的定义形式并没有什么不同 8 public class Destination{ 9 private String label; 10 Destination(String whereto){ 11 label=whereto; 12 } 13 public String getLabel(){ 14 return label; 15 } 16 } 17 18 public class Contents{ 19 private int i=11; 20 public int value(){ 21 return i; 22 } 23 } 24 ///提供一个统一的创建内部类的接口 25 public Destination destination

Java基础之六、Java编程思想(8-10)

五迷三道 提交于 2020-02-25 22:51:14
八、多态 多态 (也称作 动态绑定 、 后期绑定 或 运行时绑定 ) 域(成员变量)是不具有多态性的,只有普通的方法调用是多态的,任何域访问操作都将由编译器解析,因此不是多态的 静态方法也是不具有多态性的   public static void main(String[] args){     Super sup = new Sub(); // Upcast     System.out.println("sup.field = " + sup.field + ". sup.getField() = " + sup.getField() );// sup.field返回父类的成员值,虽然子类也定义了同名成员, sup.getField()访问子类的重写方法   } 九、接口 1:在class前添加abstract关键字,定义成抽象类。 抽象类不能实例化,即不能通过new生成对象,但 注意可以追加{}生成匿名实现类 ,仍然不是它自己的实例化。 抽象类可以有构造函数,但不能直接调用,通常由实现类构造函数调用。 抽象类的方法前添加abstract关键字,定义抽象方法,派生类必须重写该方法,然后才能实例化。Java类中如有抽象方法,则类符号前必须也要添加abstract关键字,定义为抽象类(可以没有抽象方法)。 抽象类中可以没有抽象方法, 即可以全部是含方法体的非抽象方法

Java基础之五、Java编程思想(1-5)

丶灬走出姿态 提交于 2020-02-24 23:20:49
一、对象导论 1:多态的可互换对象   面向对象程序设计语言使用了 后期绑定 的概念。   当向对象发送消息时,被调用的代码直到运行时才能确定。也叫 动态绑定 。 2:单根继承结构   所有的类最终都继承自单一的基类,这个终极基类的名字就是 Object 3:对象的创建和生命期   对象的数据处于作用域,Java完全采用了动态内存分配方式(基本类型只是一种特例) 二、一切都是对象 1:基本类型   基本类型是一个并非是引用的“自动”变量。这个变量直接存储“值”,并置于堆栈中 2:Java中的数组   Java确保数组会被初始化。而且不能在它的范围之外被访问 3:作用域(scope)   Java对象不具备和基本类型一样的生命周期。当用new创建一个Java对象时, 它可以存活于作用域之外    {    String s = new String( "a string");   } // End of scope 引用 s 在作用域终点就消失了。然而, s 指向的 String 对象仍继续占据内存空间 import 关键字   指示编译器导入一个包,也就是一个类库,Java中所有的代码都必须写在类里。特定类 java.lang 会被 自动导入 到每一个Java文件中。 5:static 关键字 只想为某一特定域分配 单一存储空间 ,而不去考虑空间要创建多少对象

java编程思想(一)对象导论

强颜欢笑 提交于 2020-02-24 04:07:21
1.1抽象过程 面向对象Smalltalk语言的5个基本特征 ①万物皆为对象。 ②程序是对象的集合,它们通过发送消息来告知彼此所要做的。 ③每个对象都有自己的由其他对象所构成的存储。(可以通过创建包含现有对象的包的方式来创建新类型的对象。) ④每个对象都拥有其类型。 ⑤某一特定类型的所有对象都可以接收同样的消息。 1.2每个对象都有一个接口 类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以一个类实际上就是一个数据类型。 面向对象程序设计的挑战之一就是在问题空间的元素和解空间的对象之间创建一对一的映射 接口:确定了对某一特定对象所能发出的请求.(方法要实现的功能) 实现:在程序中满足这些请求的代码和隐藏的数据一起构成了实现. 1.4被隐藏的具体实现 访问控制存在的理由 1让客户端程序员无法触及他们不应该触及的部分(方法的实现) 2允许库设计者可以改变类内部工作方式而不影响到客户端程序员 1.6继承 is-a(是一个)关系:可以用一个导出类对象完全替代一个基类对象,这可以被视为纯粹替代.例圆是一个几何图形 is-like-a(像一个):在导出类中添加了新的接口元素,这样也就扩展了接口.例:科学计算器像一个简单计时器, 来源: CSDN 作者: 杰哥的复仇 链接: https://blog.csdn.net/weixin_41246909/article/details

《JAVA编程思想》 · 笔记

女生的网名这么多〃 提交于 2020-02-23 19:14:49
1 一个类中的成员方法中,定义一个变量,则该变量不会被初始化。 如:“ int a;” 中的a不会被初始化成a=0; 2 .对于类:class a { void m(double a){} } ,可以运行语句:(new a()).m(5); 其中参数5会被认为是int类型,但在类中找不到合适的方法,于是会自动转化为double 类型。 3 .不可用返回值来区分方法(即无法实现多态性) 4 .一个类的成员方法被private所修饰,此时,该方法会被“隐藏”。在继承该类时,无法重载该方法,若试图用public来创建同名的方法,此时其实是创建了一个新的方法,而没有重载。 5 .一个类的初始化: 先加载静态成员变量,后加加载非静态成员变量; 先加载成员变量,后加载成员方法。 6 .【加载顺序】B类继承A类: A类的静态成员变量 B类的静态成员变量 A类的非静态成员变量 A类的构造方法 B类的非静态成员变量 B类的构造器 来源: CSDN 作者: 喵帕斯酱 链接: https://blog.csdn.net/qq_42442111/article/details/104459414

侯捷去哪了?

こ雲淡風輕ζ 提交于 2020-02-22 09:56:37
我学习C++和MFC一直都看侯捷老师的书,比如他的译作《Essential C++》和《C++ Primer》(繁体版)、他的著作《深入浅出MFC》,而且特别喜欢看他的《无责任书评》,内心中十分之崇拜他(我很少崇拜人,但他确实是我发自内心崇拜的人),曾经有过一段时间只要在书店看到他的书就会买。 后来我转做.NET了,而他老人家也开始研究Java了(出于对他的好感,我仍然仔细拜读了他的译作《Java编程思想》,此书当时在书店里共有两种版本——第二版和第三版——我毫不犹豫的选择了他翻译的第二版),于是也就很少关注他了,而让我差异的是,他不光是淡出了我的视线,也谈出了大家的视线。不仅没有新作上市,连 网站 也不更新了(现在已经停了),于是我不禁要问:侯捷去哪了? 如果哪位同仁有侯老师的近况还请不吝告知,谢谢! 附:侯捷在大陆的著、译作 深入浅出MFC 深度探索C++对象模型 C++标准程序库 Effective C++ More Effective C++ C++ Primer题解 泛型编程与STL C++设计新思维 STL源码剖析 Essential C++ 重构 Win32多线程程序设计 内存受限系统之软件开发 C# Primer .NET大局观 Practical Java Java编程思想 Word排版艺术 来源: https://www.cnblogs.com/xuyzh

什么是AOP面向切面编程思想

為{幸葍}努か 提交于 2020-02-14 00:47:26
什么是AOP? 抽象:抽取特别像的东西。 如图,是一种横向的抽取,所以叫做面向切面。 下面两个图简单的体现了AOP的原理↓↓↓ 这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。 AOP是Spring提供的关键特性之一。AOP即面向切面编程,是OOP编程的有效补充。 使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统。 从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑——比如权限管理,事物管理,日志记录等等。 这些系统性的编程工作都可以独立编码实现,然后通过AOP技术切入进系统即可。从而达到了 将不同的关注点分离出来的效果。 来源: https://www.cnblogs.com/yangf428/p/12305958.html

Java编程思想学习(十一) 泛型

廉价感情. 提交于 2020-02-13 08:02:20
1.概要 generics enable types (classes and interfaces) to be parameters when defining classes, interfaces and methods. 泛型能在定义类,接口和方法时将类型(类和接口)作为参数。和方法声明时的形式参数很类似,都是为了在不同的输入时重用相同的代码。不同的是形式参数输入的是 值 而泛型是 类型 。 2.为什么使用泛型 1.编译时更加强的(Stronger)类型检测 java编译器对泛型代码进行强类型检测,一旦检测到代码违反类型安全就发出类型错误。 修复编译错误要比运行错误容易,因为运行错误很难找到问题所在。 2.不用类型转换 //没有使用泛型 List list = new ArrayList(); list.add("without generics"); //需要强制类型转换 String s1 = (String) list.get(0); //使用泛型 List<String> list2 = new ArrayList<String>(); list2.add("generics"); String s2 = list2.get(0);//不需要转换 3.使程序员能实现适用更加普遍的算法 通过使用泛型,使程序员能实现普遍的算法,算法将是 能使用于不同类型的,能自定义的

《 Java 编程思想》CH03 操作符

落爺英雄遲暮 提交于 2020-02-13 00:41:47
《 Java 编程思想》CH03 操作符 在最底层,Java中的数据是通过操作符来操作的。 操作符 + , - , * , * , = 与其他语言类似 几乎所有的操作符只能操作“基本类似”,而 = , == , != 是例外 String 类支持 + 和 += 操作符,表示拼接操作,在进行拼接的操作会尝试将非 String 的元素转换为 String(调用tostring()) 赋值操作符 = 的左边(左值)必须是一个明确的已命名的变量。 赋值 在为对象“赋值”时,其实质是拷贝“引用”,需要注意“别名现象” package com.company.ch03; class Tank { int level; } public class Assignment { public static void main(String[] args) { Tank tank1 = new Tank(); Tank tank2 = new Tank(); tank1.level = 12; tank2.level = 13; System.out.println("tank1 = " + tank1.level); System.out.println("tank2 = " + tank2.level); tank1 = tank2; tank1.level++; System.out

Spring 核心编程思想目录

梦想的初衷 提交于 2020-02-10 11:30:16
Spring 核心编程思想目录 Spring 核心编程思想系列笔记,是本人在学习《小马哥讲Spring核心编程思想》过程的总结。如果感兴趣可以订阅正版: https://time.geekbang.org/course/intro/265 )。 来源: https://www.cnblogs.com/binarylei/p/12290153.html