1继承,extend。为什么要继承,因为提高了代码的复用性,
特点,java中的继承不支持多继承,支持单继承,因为多继承是有弊端的,如果一个子类多继承了好几个父类,那么如果父类中都是同名函数,子类调用的时候就不知道调用的是哪一个了。
继承之后,子夫类之间成员互访,
变成互访,子类访问本类变量的时候用this。访问父类的变量的时候用super
函数互访,其实就是覆盖,这里要说一下覆盖和重载的区别,
重载:只能出现在构造函数中,函数名一直,但是参数的类型和数量不一样
覆写,只能出现在继承中,子类的函数名和父类的完全一致,包括参数,
而且注意覆盖的时候,子类函数必须保证权限大于等于父类
静态只能覆盖静态
继承中的构造函数,
子类对象在初始化的时候会先调用父类中的构造函数,因为子类构造函数的上一行都有个隐藏的super()
子类函数的实例化过程
1构造函数实例化是,必须先调用父类的空参数的构造函数,没有的话就手动super()
2final
被final修饰的有类,变量,函数,
1被它修饰的类不能被继承,因为继承打破了封装性,为了保持封装性
2,被他修饰的变量时常量,只能赋值一次。
3被他修饰的函数不能被覆盖,因为一个类中有些方法时不需要子类覆盖的,
4,内部本类定义在局部位置上时,只能访问该局部被final修饰的局部变量
3抽象
Abstract 抽象,当多个类出现了共同的功能,但是功能的主体不同, 这时候就用抽象,
特点啊1抽象方法存在于抽象类中
2被abstract修饰着,
子类要想如果继承抽象类的,话,必须把它内部的抽象方法都覆盖了,要不然这个子类也是抽象的。
3,当然抽象类是不能创建对象的,
4,抽象类的方法中都没有方法体的。
423种设计模式中之二的模板设计模式
定义功能的时候,功能的一部分是确定的,但是有一部分是不确定的,而且,确定的那部分要用到不确定的那部分,这时候就将不确定的那部分曝露出去,让他的子类去完成。
5 接口
接口,interface,其实就是一个抽象类,里边所有的函数都是抽象的。
接口里边常见的定义是常量和函数
接口里边都是public,public static final int x =8;
定义方法 public abstract getNUm();
用接口来实现多继承,一个类不但在同时继承一个父类的同时还可以多实现好几个接口。
因为他是抽象类,所以呢,具有抽象类的特点,子类必须把接口中的抽象方法都覆写完才行,要不然子类也是抽象类。不能创建对象。