封装(Encapsulation) 对外部不可见
继承(Inheritance) 扩展类的功能
多态(Polymorphism) 方法的重载 对象的多态性
方法的重载:方法的重载就是方法名称相同,但参数的类型和参数的个数不同,通过传递参数的个数及类型不同以完成不同功能的方法调用。
在构造方法的声明中读者一定要牢记以下几点:
· 构造方法的名称必须与类名称一致
· 构造方法的声明处不能有任何返回值类型的声明
· 不能在构造方法中使用return返回一个值
构造方法的主要目的是为类中的属性初始化。
构造方法的重载过程与普通方法一样:参数的类型或个数不同
只使用一次的对象,称为匿名对象。 匿名对象只在堆内存中开辟空间,而不存在栈内存的引用。
掌握String类的两种实例化方式
String str1 = "hello"; String str2 = new String("hello");
掌握String的两种比较操作
==:地址值比较
equals()方法:内容比较
深入分析String类两种实例化方式的区别
掌握String的使用特点
一个字符串就是String的匿名对象
字符串的内容一旦声明则不可改变
掌握this关键字的作用
使用this调用其他构造方法
使用this表示当前对象
表示类中的属性可以使用this调用本类的构造方法 this表示当前对象
了解static关键字的作用
掌握static属性、static方法的声明及使用
掌握static使用的限制
在程序中使用static声明属性的话,则此属性称为全局属性(有些也称为静态属性)
static既可以在声明属性的时候使用,也可以用其来声明方法,用它声明的方法有时也被称为“类方法”。
非static声明的方法可以去调用static声明的属性或方法的。但是static声明的方法是不能调用非static类型声明的属性或方法的。
掌握Java中的三种代码块的定义及使用
代码块本身并不是一个很难理解的概念,实际上之前也一直在使用。所谓的代码块是指使用“{}”括起来的一段代码,根据位置不同,代码块可以分为四种:普通代码块、构造块、静态代码块、同步代码块,其中同步代码块本书将在多线程部分进行讲解,本章先来观察其他三种代码块。
普通代码块就是指直接在方法或是语句中定义的代码块
构造代码块是直接写在类中的代码块
静态代码块,是使用static关键字声明的代码块
1 class Demo { 2 { // 定义构造块 3 System.out.println("1、构造块。") ; 4 } 5 static{ // 定义静态代码块 6 System.out.println("0、静态代码块") ; 7 } 8 public Demo(){ // 定义构造方法 9 System.out.println("2、构造方法。"); 10 } 11 } 12 public class CodeDemo03 { 13 static{ // 在主方法所在类中定义静态块 14 System.out.println("在主方法所在类中定义的代码块。") ; 15 } 16 public static void main(String args[]) { 17 new Demo() ; // 实例化对象 18 new Demo() ; // 实例化对象 19 new Demo() ; // 实例化对象 20 } 21 };
从之前的代码可以发现,静态代码块优先于主方法执行,那么就可以直接使用静态代码块而不使用主方法向屏幕上打印“Hello World!”。
了解构造方法私有化的目的
掌握单态设计模式
类的封装性不光体现在对属性的封装上,实际上方法也是可以被封装的,当然,在方法封装中也包含了对构造方法的封装。
掌握对象数组的使用
掌握对象数组的静态及动态初始化
掌握内部类的优缺点
掌握内部类的使用格式
掌握static声明内部类的作用
可以使用内部类访问方法中的参数
用static可以声明属性或方法,而用static也可以声明内部类,用static声明的内部类则变成外部类,但是用static声明的内部类不能访问非static的外部类属性。
也可以在方法中定义一个内部类,但是在方法中定义的内部类是不能直接访问方法中的参数的,如果方法中的参数要想被内部类所访问,则参数前必须加上final关键字。
掌握继承的基本概念及实现
掌握继承实现的各种限制
在Java中使用extends关键字完成类的继承关系,操作格式:
在Java中只允许单继承,不能使用多重继承
在使用继承的时候也应注意的是:子类是不能直接访问父类中的私有成员的,但是子类可以调用父类中的非私有方法,但是不能直接调用父类中的私有成员。
掌握子类对象的实例化过程
掌握方法覆写的概念及实现
掌握super关键字的作用
在继承的操作中,对于子类对象的实例化也是有要求的:“子类对象在实例化之前必须首先调用父类中的构造方法之后再调用子类自己的构造方法”。
对于以上的代码实际在子类的构造方法中隐含了一个super()的语法
在继承的关系中也存在着方法覆写的概念,所谓的方法覆写就是指子类定义了与父类中同名的方法,但是在方法覆写时必须考虑到权限,即:被子类覆写的方法不能拥有比父类方法更加严格的访问权限
方法的重载与覆写的区别
使用super可以从子类中调用父类中的构造方法、普通方法、属性。
this与super的区别
掌握final关键字的使用要求
掌握全局常量的声明
final在java中表示的意思是最终的意思。也可以称为完结器。
可以使用final关键字声明类、属性、方法:
使用final声明的类不能有子类;
使用final声明的方法不能被子类所覆写;
使用final声明的变量即成为常量,常量不可以修改 。
被final修饰的变量即成为常量
使用static final关键字联合声明的变量称为全局常量:
掌握抽象类的定义格式
掌握抽象类的使用规则
包含一个抽象方法的类必须是抽象类;
抽象类和抽象方法都要使用abstract关键字声明;
抽象方法只需声明而不需要实现;
抽象类必须被子继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法。
问题1:一个抽象类可以使用final关键字声明吗?
一个类如果使用了final关键字声明,则此类不能被子类继承,而抽象类又必须被子类覆写,所以很明显,第一个问题的答案是:“一个抽象类不能使用final关键字声明”。
问题2:一个抽象类中可以定义构造方法吗?
实际上在一个抽象类中是允许存在构造方法的,因为抽象类依然使用的是类的继承关系,而且抽象类中也存在各个属性,所以子类在实例化之前肯定是先要对父类进行实例化的。
掌握接口的定义格式及使用
掌握接口与抽象类的关系
接口是java中最重要的概念,接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。
对象的多态性
掌握对象的向上转型及向下转型的使用
掌握对象转型的限制
多态性在面向对象中中是一个最重要的概念,在java中面向对象主要有以下两种主要体现: 方法的重载与覆写 对象的多态性
向上转型:子类对象 父类对象
对于向上转型,程序会自动完成,格式: 对象向上转型:父类 父类对象 = 子类实例 ;
向下转型:父类对象 子类对象
对于向下转型时,必须明确的指明要转型的子类类型,格式: 对象向下转型:子类 子类对象 = (子类)父类实例 ;
但是必须提醒读者的是,在进行对象的向下转型之前,必须首先发生对象向上转型才可以,否则将出现对象转换异常
掌握instanceof关键字的作用及使用时机
可以使用instanceof对对象的转型进行安全验证
在java中可以使用instanceof关键字判断一个对象到底是那个类的实例 对象 instanceof 类 -> 返回boolean类型
掌握抽象类及接口的实例化操作
掌握模板设计的作用
掌握工厂设计模式的作用
掌握代理设计模式的作用
掌握适配器设计模式的作用
掌握抽象类与接口的使用区别
匿名内部类是在抽象类和接口的基础之上发展起来的另外一种内部类的展现形式,当一个抽象类或接口的子类只需要使用一次的时候就可以使用匿名内部类的定义格式。