摘要:
类必须实现接口中的方法,否则其为一抽象类。 实现中接口和类相同。 接口中可不写public,但在子类中实现接口的过程中public不可省。 (如果剩去public则在编译的时候提示出错:对象无法从接口中实现方法。) 注: ① 一个类除继承另外一个类,还可以实现接口; class IAImpl ext 阅读全文
摘要:
JAVA的核心概念:接口(interface) 接口与类属于同一层次,实际上,接口是一种特殊的抽象类。 如: interface IA{ } public interface:公开接口 与类相似,一个文件只能有一个public接口,且与文件名相同。 在一个文件中不可同时定义一个public接口和一个 阅读全文
摘要:
如果让一个非抽象类继承一个含抽象方法的抽象类,则编译时会发生错误。因为当一个非抽象类继承一个抽象方法的时候,本着只有一个类中有一个抽象方法,那么这个类必须为抽象类的原则。这个类必须为抽象类,这与此类为非抽象冲突,所以报错。 所以子类的方法必须覆盖父类的抽象方法。方法才能够起作用。 只有将理论被熟练运 阅读全文
摘要:
Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性。 Abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型。 Final和abstract永远不会同时出现。 当abstract用于修饰方法时,此时该方法为抽象方法,此时方法不需要实现,实 阅读全文
摘要:
利用final定义方法:这样的方法为一个不可覆盖的方法。 Public final void print(){}; 为了保证方法的一致性(即不被改变),可将方法用final定义。 如果在父类中有final定义的方法,那么在子类中继承同一个方法。 如果一个方法前有修饰词private或static,则 阅读全文
摘要:
在JAVA中利用public static final的组合方式对常量进行标识(固定格式)。 对于在构造方法中利用final进行赋值的时候,此时在构造之前系统设置的默认值相对于构造方法失效。 常量(这里的常量指的是实例常量:即成员变量)赋值: ①在初始化的时候通过显式声明赋值。Final int x 阅读全文
摘要:
final可以修饰类、属性、方法。 当用final修饰类的时候,此类不可被继承,即final类没有子类。这样可以用final保证用户调用时动作的一致性,可以防止子类覆盖情况的发生。 当利用final修饰一个属性(变量)的时候,此时的属性成为常量。 JAVA利用final定义常量(注意在JAVA命名规 阅读全文
摘要:
覆盖不适用于静态方法。 静态方法不可被覆盖。(允许在子类中定义同名静态方法,但是没有多态,严格的讲,方法间没有多态就不能称为覆盖) 当static修饰代码块时(注:此代码块要在此类的任何一个方法之外),那么这个代码块在代码被装载进虚拟机生成对象的时候可被装载一次,以后再也不执行了。 一般静态代码块被 阅读全文
摘要:
Public static void printData(){} 表明此类方法为类方法(静态方法) 静态方法不需要有对象,可以使用类名调用。 静态方法中不允许访问类的非静态成员,包括成员的变量和方法,因为此时是通过类调用的,没有对象的概念。This.data是不可用的。 一般情况下,主方法是静态方法 阅读全文
摘要:
面向对象高级: 修饰符: static:①可修饰变量(属性);②可修饰方法;③可修饰代码块。 Static int data语句说明data为类变量,为一个类的共享变量,属于整个类。 Int data为实例变量。 例: static int data; m1.data=0; m1.data++的结果 阅读全文
摘要:
覆盖时考虑子类的private及父类的public(考虑多态),之所以这样是避免调用A时出现实际调用B的情况。而出现错误。 面向对象高级、内部类、集合、反射。 面向对象高级、集合都是面向对象的核心内容。 阅读全文
摘要:
封装、继承、多态为面向对象的三大基石(特性)。 运行时的动态类型判定针对的是方法。运行程序访问的属性仍为编译时属性。 Overloading针对的是编译时类型,不存在运行时的多态。 阅读全文
摘要:
关系运算符:instanceof a instanceof Animal;(这个式子的结果是一个布尔表达式) a为对象变量,Animal是类名。 上面语句是判定a是否可以贴Animal标签。如果可以贴则返回true,否则返回false。 在上面的题目中: a instanceof Animal返回 阅读全文
摘要:
运行时多态的三原则:(应用时为覆盖) 1、对象不变;(改变的是主观认识) 2、对于对象的调用只能限于编译时类型的方法,如调用运行时类型方法报错。 在上面的例子中:Animal a=new Dog();对象a的编译时类型为Animal,运行时类型为dog。 注意:编译时类型一定要为运行时类型的父类(或 阅读全文
摘要:
多态:多态指的是编译时类型变化,而运行时类型不变。 多态分两种: ① 编译时多态:编译时动态重载; ② 运行时多态:指一个对象可以具有多个类型。 对象是客观的,人对对象的认识是主观的。 例: Animal a=new Dog();查看格式名称; Dog d=(Dog)a。声明父类来引用子类。 (思考 阅读全文
摘要:
Super()表示调用父类的构造方法。 Super()也和this一样必须放在第一行。 This()用于调用本类的构造方法。 如果没有定义构造方法,那么就会调用父类的无参构造方法,即super()。 要养成良好的编程习惯:就是要加上默认的父类无参的构造方法。 思考:可是如果我们没有定义无参的构造方法 阅读全文
摘要:
当构造一个对象的时候,系统先构造父类对象,再构造子类对象。 构造一个对象的顺序:(注意:构造父类对象的时候也是这几步) ① 递归地构造父类对象; ② 顺序地调用本类成员属性赋初值语句; ③ 本类的构造方法。 阅读全文
摘要:
对于方法的修饰词,子类方法要比父类的方法范围更加的宽泛。 父类为public,那么子类为private则出现错误。 之所以构造方法先运行父类再运行子类是因为构造方法是无法覆盖的。 以下范围依次由严到宽: private :本类访问; default :表示默认,不仅本类访问,而且是同包可见。 Pro 阅读全文
摘要:
方法的覆盖(overriding) 方法的重载并不一定是在一个类中:子类可以从父类继承一个方法,也可以定义一个同名异参的方法,也称为overloading。 当子类从父类继承一个无参方法,而又定义了一个同样的无参方法,则子类新写的方法覆盖父类的方法,称为覆盖。(注意返回值类型也必须相同,否则编译出错 阅读全文
摘要:
继承: 父类(SuperClass)和 子类(SonClass)。 父类的非私有化属性和方法可以默认继承到子类。 Class Son extends Father{ } 而如果父类中的私有方法被子类调用的话,则编译报错。 父类的构造方法子类不可以继承,更不存在覆盖的问题。(非构造方法可以) 如果子类 阅读全文
摘要:
封装:使对象的属性尽可能私有,对象的方法尽可能的公开。用private表示此成员属性为该类的私有属性。 Public表示该属性(方法)公开; Private表示该属性(方法)为只有本类内部可以访问(类内部可见)。 (想用private还要用set和get方法供其他方法调用,这样可以保证对属性的访问方 阅读全文
摘要:
This表示当前对象。 Public void printNum(){ Int number=40; System.out.println(this.number); } 此时打印的是实例变量,而非局部变量,即定义在类中而非方法中的变量。 This.number表示实例变量。 谁调用this.num 阅读全文
摘要:
构造方法也可以实现overloading。例: public void teach(){}; public void teach(int a){}; public void teach(String a){}为三种不同的方法。 Overloading方法是从低向高转。 Byte—short—floa 阅读全文
摘要:
面向对象方法的重载(overloading)和覆盖(overriding)。 在有些JAVA书籍中将overriding称为重载,overloading称为过载。 Overloading在一个类中可以定义多个同名方法,各个方法的参数表一定不同。但修饰词可能相同,返回值也可能相同。 在程序的编译过程中 阅读全文
摘要:
可以构造多个构造方法,但多个构造方法的参数表一定不同,参数顺序不同即属于不同的构造方法: public student(string name,int a){ } public student(int a,string name){ } 为两个不同的构造方法。 如果我们未给系统提供一个构造方法,那么 阅读全文
摘要:
用类来生成对象的语句: Student s=new Student()。 第一个Student表示这是用Student类进行定义。“Student()”表示调用一个无参数的构造方法。 如果()中有参数,则系统构造对象的过程中调用有参的方法。 此时S称为一个对象变量。 Student s的存储区域存放 阅读全文
摘要:
类方法中的一类特殊方法:构造方法。 构造方法是当用类生成对象时,系统在生成对象的过程中利用的方法。 注意:构造方法在生成对象的时候会被调用,但并不是构造方法生成了对象。 构造方法没有返回值。格式为:public 方法名。 构造方法的方法名与类名相同。 构造方法是在对象生成的过程中自动调用,不可能利用 阅读全文
摘要:
书写方法的格式: 修饰符 返回值 方法名 调用过程中 方法体 可能出现的例外 public int/void addNumber(参数) throw Excepion {} 例: public int addNumber(int a,int b){ } 注:方法名中的参数int a,int b为局部 阅读全文
摘要:
在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。 开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能 。 从语法上来看,一个类是一个新的数据类型。 在面向对象编程中,除了简单数据类型,就是对象类型。 定义类的格式: class Student{ 代码 } 阅读全文
摘要:
其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。 对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。这样才能使每个对象本身做成最好的。 对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。 实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。 可复用性是OOP的 阅读全文
摘要:
为什么要使用面向对象: 首先,面向对象符合人类看待事物的一般规律。 对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。 方法的定义非常重要。方法有参数,也可能有返回值。 注意区分:对象(本身)、对象的实现者、对象的调用者。 分析对象主要从方法开始。 我们通过类来看待对象,类是对象的抽象。 阅读全文
摘要:
面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做什么(方法):告诉外界对象有那些功能。 后者以前者为基础。 大的对象的属性也可以是一个对象。 阅读全文
摘要:
文件 I/O 问题:(1)对不存在的或者错误的文件进行操作吗?(2)文件以不正确的方式打开吗?(3)文件结束判断不正确吗?(4)没有正确地关闭文件吗? 阅读全文
摘要:
如果可能的话,使用 PC-Lint、LogiScope 等工具进行代码审查。 阅读全文
摘要:
把编译器的选择项设置为最严格状态。 阅读全文
摘要:
尽量不要使用与具体硬件或软件环境关系密切的变量。 阅读全文
摘要:
尽量使用标准库函数,不要“发明”已经存在的库函数。 阅读全文
摘要:
如果原有的代码质量比较好,尽量复用它。 但是不要修补很差劲的 代码,应当重新编写。 阅读全文
摘要:
不要设计面面俱到、非常灵活的数据结构。 阅读全文
摘要:
避免编写技巧性很高代码 阅读全文