一、类的继承
1.class子类名 extends fuleiming
2.Java只支持单继承,不允许多重继承,有多层继承,即一个类可以继承某一个类的子类,如类B继承了类A,类C又可以继承类B,那么类C也间接继承了类A。
3.子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法。在子类的构造方法中可使用语句super(参数列表) 调用父类的构造方法。
4.父类中定义了有参数的构造函数,如子类不想调用,则应在父类中再定义一个无参数的构造函数或子类中使用super()。
二、子类对象的实例化过程
概括来说:
①子类的所有构造函数,默认都会访问父类中空参数构造函数。因为子类每一个构造函数内的第一行都有一句隐式super()。
②当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数。
③当然,子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数。子类中至少有一个构造函数会访问本类中的构造函数。
三、覆盖父类的方法(重写)
1.①覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型。
②如果在子类中想调用父类中的那个被覆盖的方法,我们可以用super.方法的格式 。
③覆盖方法时,不能使用比父类中被覆盖的方法更严格的访问权限 。(即子类权限必须大于等于父类权限,才能覆盖,否则编译失败)
2.扩展总结:重写与重载的区别?!
重载:只看同名函数的参数列表(参数列表不同,返回值、修饰符、抛出的异常可以不同)
重写:子父类包括参数列表、返回值类型要一样,访问修饰符的权限大于被重写方法的访问修饰符。
四、final关键字
①可以修饰类、函数、变量②final标记的类不能被继承也不能被子类重写。③final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。④方法中定义的内置类只能访问该方法内的final类型的局部变量,用final定义的局部变量相当于是一个常量,它的生命周期超出方法运行的生命周期,将一个形参定义成final也是可以的,这就限定了我们在方法中修改形式参数的值。⑤public static final共同标记常量时,这个常量就成了全局的常量。
五、抽象类
抽象类特点:
①抽象类必须用abstract关键字来修饰;抽象方法也必须用abstract来修饰。
②抽象类不能被实例化,也就是不能用new关键字去产生对象。
③抽象方法只需声明,而不需实现。
④含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。
六、接口
如果一个抽象类中的所有方法都是抽象的,我们就可以将这个类用接口定义。接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
①接口中的成员都是public访问类型的。
变量:public static final
方法:public abstract
②用extends关键字去继承一个已有的接口,也可以用implements关键字去实现一个接口中的所有方法,定义一个抽象类可以用implements关键字去实现一个接口中定义的部分方法。
③一个类可以继承一个父类的同时,实现一个或多个接口,extends关键字必须位于implemnets关键字之前 。
七、多态
1、对象之间的类型转换
fulei f = new zilei();
zilei z = (zilei)f ; //强制将父类的引用,转成子类类型
2.instanceof 操作符可以用它来判断一个实例对象是否属于一个类,例如 (f instanceof zilei)
3.Object类及equals方法
Object类,是所有对象的间接父类。
public boolean equals(Object obj)//判断对象是否相等。
4.扩展总结:
多态中,成员函数在调用时,便一看左边,运行看右边;成员变量,无论编译和运行,都参考右边;静态成员函数,无论编译还是执行都参考 左边,不参考右边对象。
八、匿名内部类
1.格式: new 父类或者接口(){定义子类的内容}
2.张老师代码体现(2h16'36"-2h17'59")
mb.usePCICard(new PCI){
public void start()
{
System.out.println("start");
}
public void stop()
{
System.out.println("stop");
}
}
九、异常
①try,catch语句
如: try{}catch(Exception e)
{System.out.println(e.getMessage());}
②throws关键字
函数后加“throws Exception ”,后面必须使用try{}catch()语句;若mian后有异常,但不想处理,则加 “throws Exception ”不必 再用try catch语句。
③自定义异常与Throw关键字
可自定义异常类,但必须继承 extends exception类。
④我们可以在一个方法中使用throw,try…catch语句来实现程序的跳转
理解代码:
void fun()
{
try{
if(x==0)
throw new XxEception("xxx");
else
throw new YyEception("yyy");
}
catch(XxEception e){
... ...
}
catch(YyEception e){
... ...
}
}
⑤一个方法被覆盖时,覆盖它的方法必须扔出相同的异常或异常的子类。
如果父类扔出多个异常,那么重写(覆盖)方法必须扔出那些异常的一个子集,也就是说不能扔出新的异常。
⑥finally{},无论异常是否发生,finally语句必须执行;若有System.exit(0),finally才不会执行
十、包
①package语句作为Java源文件的第一条语句。如果没有package语句,则为缺省无名包。
②import 包名(默认引入 import java.lang.*,所以不用写)
③jdk中常用的包
java.lang----包含一些Java语言的核心类,如String、Math、 Integer、System和Thread,提供常用功能。
java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
java.applet----包含applet运行所需的一些类。
java.net----包含执行与网络相关的操作的类。
java.io----包含能提供多种输入/输出功能的类。
java.util----包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。
十一、①类本身只有两种访问控制,即public 和默认,父类不能是private 和 protected,否则子类无法继承。public修饰的类能被所有的类访问,默认修饰(即class关键字前没有访问控制符)的类,只能被同一包中的所有类访问。
②使用jar文件
总结:现在只是把大部分知识点写下来,便于日后随时复习,如果要熟练应用,要在下面根据视频或其他资料多打代码,勤加练习。