明构造方法,实例化时系统不会在自动创建没有参数没有方法体的构造方法。
? 在实例化对象的同时,可以通过构造方法这个对象的属性进
行赋值。
? 构造方法也可以重载,在一个类中可以定义多个构造方法,
只要每个构造方法的参数类型或参数个数不同即可。
6、this
? 通过this关键字可以明确地去访问一个类的成员变量,解决
与局部变量名称冲突问题
? 通过this关键字可以调用成员方法
? 构造方法是在实例化对象时被Java虚拟机自动调用的,在程
序中不能像调用其他方法一样去调用其他的构造方法,但可以在一个构造方法中使用“this(参数1,参数2.。。。)”的形式来调用其他的构造方法
? 只能在构造方法中使用this调用其他的构造方法,不能在成
员方法中使用。
? 在构造方法中,使用this调用构造方法的语句必须放在第一
行,且只能出现一次
? 不能在一个类的两个构造方法中使用this互相调用
7、垃圾回收
? Java引入了垃圾回收机制,当垃圾堆积到一定程度,虚拟机
会启动垃圾回收器,回收垃圾对象占用的内存
? 也可以调用System.gc()方法通知虚拟机立刻进行垃圾回收 ? 当一个对象在内存中被释放时,它的finalize方法会被自动调
用
8、 Static关键字
? 静态变量:静态变量被所有的实例共享,使用“类名.变量名”
的方式调用。Static只能修饰成员变量不能修饰局部变量。 ? 静态方法:在不创建对象的的情况下就可以调用某个方法,
只需在类中定义的方法前加static关键字,使用“类名.方法名”的方式调用,不和对象绑在一起。在静态方法中只能访问用static修饰的成员,没有被static修饰的成员需要先创建对象才能访问
? 静态代码块:使用一对大括号包围起来的若干行代码被称为
一个代码块,用static关键字修饰的代码块就是静态代码块。类加载时,静态代码块会被执行。由于类只加载一次,所有静态代码也只执行一次。
9、类的继承
? 在程序中,继承描述的是事物之间的所属关系 ? 子类会自动拥有父类所有的属性和方法 ? 继承语法格式
资料
修饰符 class 子类名 extends 父类名{
成员变量; 成员方法; }
? 继承注意事项
一个类只能有一个直接父类 多个类可以继承一个父类 多层继承是可以的
一个类是某个类的子类,同时又是另一个的父类 10、重写父类方法
? 子类继承了父类的方法,但有时又需要对继承的方法做一定
的修改,即对父类方法进行重写。
? 被重写的方法必须与父类的方法具有相同的方法名、参数列
表和返回类型。
11、super关键字
? 当子类重写父类的方法后,子类对象将无法访问父类被重写
的方法。
? Java提供了super关键字来访问父类的成员变量、成员方法和
构造方法。
1. 使用super关键字调用父类成员变量和成员方法,格式为:
? super.成员变量;
? super.成员方法([参数1,参数2… …])
2. 使用super关键字调用父类的构造方法,格式为:
? super([参数1,参数2… …])
? 通过super调用父类构造方法的代码必须放在子类构造
器的第一行,而且只能出现一次
? 子类构造方法中一定会调用父类的某个构造方法,可以
通过super指定调用父类的哪个构造方法,如果没有指定,在实例化子类时,会自动调用父类无参的构造方法 ? 可以在子类中显示地调用父类中已有的构造方法,也可
以选择在父类中定义无参的构造方法
12、final关键字
? final关键字可用来修饰类、变量和方法 ? final修饰的类不能被继承
? final修饰的方法不能被子类重写
?
final修饰的变量(成员变量和局部变量)是常量,只能赋值一次
13、抽象类
? Java允许在定义方法时不写方法体,不包含方法体的
方法为抽象方法,抽象方法必须使用abstract关键字来修饰。
? 当一个类中包含了抽象方法,该类必须使用abstract
关键字来修饰,使用abstract关键字修饰的类为抽象类
资料
? 抽象类的格式
abstract class 类名{ 成员变量; 成员方法();
abstract 返回类型 方法名(参数类型列表); }
? 抽象类—注意事项
? 包含抽象方法的类必须声明为抽象类,但抽象类可
以不包含任何抽象方法,只需要用abstract关键字修饰即可。
? 抽象类不能被实例化,因为抽象类中可能含有抽象
方法,而抽象方法是没有方法体的,不可以被调用的。
? 如果想调用抽象类中定义的方法,则需要创建一个
子类,在子类中将抽象类中的抽象方法进行实现。
14、接口
? 如果一个抽象类中的所有方法都是抽象的,则可以使用另外一种方式来定义,即接口,在定义接口时,需要使用interface关键字来声明。 ? 接口的格式 interface 接口名{
类型 变量名 = 初始值; //定义全局常量
返回类型 方法名(参数列表); //定义的抽象方法 }
? 接口定义的方法默认为用public abstract来修饰,即抽象方法;
? 接口中定义的变量默认使用public static final 来修饰,即全局常量
? 由于接口中的方法都是抽象的,所有不能实例化,需要定义一个类,并使用implements关键字实现接口中的所以方法。 ? 接口的实现
class 类名 implements 接口名{ 成员变量; 成员方法();
抽象方法的实现; }
? 一个接口可以使用extends关键字去继承另一个接口 ? 接口—注意事项
? 接口的方法都是抽象的,不能实例化对象 ? 当一个类实现接口时,如果这个类是抽象的,
则实现接口中的部分方法即可,否则需要实现接口中的所有方法。
? 一个类通过implements关键字实现接口时,可
资料
实现
以多个接口,被实现的多个接口之间要用逗号隔开。
? 一个接口可以通过extends关键字继承多个接
口,接口之间用逗号隔开
? 一个类继承另一个类的同时还可以实现接口,
此时extends关键字必须位于implements关键字之前。
15、接口与抽象类的比较 抽象类 成员变量 构造方法 可以写构造方法,可以在子类构造方法中使用super调用父类的构造方法,但是抽象类不能使用new创建对象 没有构造方法,不能用new实例化接口 方法 没有限制 没有限制 接口 所以变量均默认为public static final 所有方法均被默认为public 和abstract 16、对象的转型 ? 向上转型----将子类的对象赋值给父类的引用
? Dog dog1 = new Dog(); ? Animal animal1 = dog1;
? 一个引用能够调用哪些成员(变量和方法),取决于这个引用的类型
? 一个引用调用的是哪个方法,取决于这个引用所指向的对象
? 向下转型----将子类的对象赋值给父类的引用
? Dog dog1 = new Dog(); ? Animal animal1 = dog1; ? Dog dog2 = (Dog) animal1;
? 先把一个对象向上转型,再把它向下转型转回来,不能直接向下转型 17、多态
? 面向对象的三个特点是封装、继承和多态。
? 在设计一个方法时,通常希望该方法具备一定的通用性。
? 可以在方法中接收一个动物类型的参数,当传入的是猫类对象时就发出猫类的叫声,传入的犬类对象时就发出犬类的叫声。在同一个方法中,这种由于参数类型不同而导致执行效果各异的现象就是多态。
? Java中为了实现多态,允许使用一个父类类型的变量来引用一个子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果
? instanceof关键字可以判断一个对象是否为某个类(或
资料