继承:
继承是通过:extends关键字实现的,修饰符如果是私有的,那么该类只在当前包可见,如果是共有的,那么可以在整个项目上可见,不可使用,private,protected修饰的类。
protected修饰的属性和方法,在同一个包下和子类可以访问,其他的不行。
继承父类的方法:public class 本类(子类) extends 父类名{}
public class zi extends fu{}
继承的特点:
- 继承public和protected修饰的属性和方法,无论父子类是否在一个包里。
- 继承默认的权限修饰符修饰的属性和方法,但是父子类必须在同一个包里。
- 无法继承私有修饰符修饰的属性或者方法
- 无法继承父类的构造方法。
super关键字
在子类里的构造方法中,使用super关键字可以访问父类的构造器{可以访问,但是不能继承。}
super(name); //super调用的是方法,不是属性。调用了父类的构造方法,只能出现在子类的构造方法中。
super.name; //调用的是,父类的属性。
super.name(); //调用的是父类的方法。
重写:
如果要在子类里面重写父类里面的方法,要满足一下条件:
- 子类里面重写父类里面的方法,方法名必须一致。
- 要有相同的列表参数。
- 返回值类型要一致。
- 重写方法的修饰符等级不能比父类要更改的方法等级小。
重写不是更改父级类里面的东西,只是添加而已,父类的东西不会改变,只是在父类方法内容执行后,加上子类重写类里执行过后的内容。
重载:
是在一个类里,有多个构造器,存在的条件是:
- 方法名一致,参数列表不同,与返回值类型,访问修饰符无关。
public SL2_1() {
}
public SL2_1(String name) {
this.name=name;
}
public SL2_1(String name,string sex) {
this.name=name;
this.sex=sex;
}
抽象类和抽象方法:
以abstract修饰的类和方法就是抽象类和抽象方法。
public abstract class SL2_1 {}
public abstract void SL2_1(){}
抽象类不能通过new实例化,而且不能用来修饰属性和构造方法。
抽象类里面可以有很多,有一个,或者没有抽象方法,甚至可以全是。
抽象方法只能声明,没有方法实现,抽象的方法必须有一个抽象的类,子类必须重写所有的抽象方法才可以实例化,否则他还是一个抽象类。
final修饰符:
用final修饰的类不能被继承。
用final修饰的方法不能被子类重写。
用final修饰的变量将全部变成常量,只能赋值一次。
用final修饰引用型变量时,变量的值是固定不变的,而变量所指的对象属性是可以变得。
abstract注意:
abstract不能和private同时修饰一个方法。
abstract不能和static同时修饰一个方法。
abstract不能和final同时修饰一个方法或者是类。