继承: 关键字:extends
作用:减少代码的重复使用
使用继承的前提:
两个类之间必须有间接或者直接的联系 比如is a的关系(小明是个人),才能拥有继承关系,不是任何情况下都允许继承
例:class Zi extends Fu{}
继承的使用注意点:
1、子类不能继承父类的私有变量
2、子类不能继承父类的构造方法
3、子类在调用自己的构造方法时,会默认调用父类的无参构造 方法(如果父类没有无参构造,在编译的时候系统会默认创建一个无参构造;但是父类有构造方法,就不会默认创建无参构造,需要自己创建)
4、私有方法不能被继承
5、子类不能继承不在一个包中默认权限的成员变量(默认权限 :friendly 友好的、private、public、protected)
关键字:instanceof
1、用来判断某个对象是否属于某个类
2、instanceof 使用前提:对象指定的类有继承关系或者实现关系
格式:对象 instanceof 类 例:小明 instanceof 人
关键字:final (修饰符,最终值)
final作用:
1、如果用一个final修饰一个基本数据类型变量,就不能再重新赋值
2、用final修饰引用数据类型变量,无法给引用数据类型变量赋值
3、final 修饰一个方法,方法不能被重写
4、final修饰类,类不能被继承
5、final修饰的对象,如果地址不一样(作用域不同),可以重新赋值
例: final Yuan y = new Yuan(10);
y = new Yuan(100); //无法重新赋值 0x98
public static void test(Yuan y){
y = new Yuan(20); //可以重新赋值 0x22
}
6、表示常量
格式:public final static 基本数据类型 变量名
例:public final static int a = 10;//a 表示10,不能改变
final修饰的变量必须要初始化:
例:final double pi = 3.14;//如果没有值3.14 就会报错
抽象类:
一个类如果被abstract修饰,那么这个就叫做抽象类
关键字: abstract
1、abstract修饰的类叫做抽象类
2、abstract修饰的方法叫做抽象方法
如果一个类继承了抽象类,必须要实现类中的所有抽象方法
例: abstract public void run ();//抽象方法是没有主体,没有方法的具体实现。
//如果继承抽象类需要重写抽象类中的run方法
public void run(){
//具体实现代码
}
abstract关键字的使用:
1、如果一个方法中没有方法体,那么这个方法必须要用abstract来修饰(方法体:方法中大括号的内容就是方法体)
2、一个类中有抽象方法,那么这个类必须用abstract修饰
3、一个非抽象的类继承了抽象类,那么这个非抽象类必须重写(实现)抽象类中所有的抽象方法
4、抽象类中可以有非抽象方法
5、抽象类中可以存在构造方法。作用是让子类能够初始化父类的变量
6、抽象类不能创建对象。原因:如果可以创建对象,对象就可以调用抽象方法,这样的调用没有意义
7、抽象类中可以没有抽象方法
abstract不能和哪些关键字使用:
1、不能和private一起使用
2、不能和static一起使用
3、不能和final一起使用
abstract 关键字的使用场景:
我们在描述一个事物的时候,发现这个事物确实存在某种行为,但是这种行为又不具体那么我们就可以抽取这种行为,声明一个没有实现的行为,这种行为就做抽象行为,那么这个时候就需要到抽象类
接口:
关键字:interface 定义接口
格式:interface 接口名{}
作用:
1、用来添加拓展功能
2、让程序解耦
3、定义约束
实现方法:implements 实现接口
格式:class 类 implements 接口名1,接口名2....{}
接口使用注意的事项:
1、接口是一个特殊的类,可以定义属性和方法
2、属性默认用final修饰(使用时必须初始化值)
3、方法都是抽象的,abstract修饰(没有方法体)
4、接口不能创建对象
5、接口没有构造方法
6、接口是给类区实现的,非抽象类实现接口时,必须将接口中的方法都实现