什么是继承(extends)?
继承是:新定义的类是从已有的类中获取属性和方法的现象。 这个已有的类叫做父类, 从这个父类获取属性和方法的类叫做子类。
ExtendsDemo1.java
class Car { //汽车
int size; //车体大小
String color; //颜色
}
class Truck extends Car { //货车
String packingBox; //货箱
}
继承的好处
1. 提高了代码的重用性
2. 让类和类之间产生了关系, 为多态创造了条件。
继承(extends)的格式
1. super关键字和this的用法相同
2. this代表本类引用, super代表父类引用
3. 当子类和父类出现同名成员的时候, 可以用super 和 this进行区分
SuperDemo.java
class SuperClass {
int i = 10;
}
class SubClass extends SuperClass {
int i = 20;
public void showMessage() {
System.out.printf('super.i = %d, this.i = %d\n', super.i, this.i);
}
}
对从父类继承过来的方法进行重写(Override)
1. 当子类中出现与父类一模一样的方法(返回值, 函数名, 形参)时, 会出现重写(Override)操作.
OverrideDemo1.java
class SuperClass {
public void speak() {
System.out.println('SuperClass: I am good~');
}
}
class SubClass extends SuperClass {
@Override //@Override表示下面出现的方法会出现重写操作,由编译器检查,如果达不到重写的条件,就会报错。一定程度上增加了代码的安全性
和健壮性
public void speak() {
super.speak();
System.out.println('SubClass: I am excellent~~~');
}
}
2. 在对父类方法进行重写(Override)操作的时候,子类不允许出现与父类同名同参但是不同返回类型的方法.
OverrideDemo2.java
}
}
class SuperClass {
public void f() {
}
}
class SubClass extends SuperClass {
@Override
public int f() {
return 1;
}
}
3. 子类重写父类的方法的访问权限要大于或者等于父类中被重写的方法
OverrideDemo3.java
public class OverrideDemo3 {
public static void main(String[] args) {
}
}
class SuperClass {
public void f() {
}
}
class SubClass extends SuperClass {
@Override
protected void f() { //把这里的访问权限改为public即可
}
}
访问控制符
访问控制符有:public, protected, default, private
有些需要一点包(package)的知识,所以等到讲包的时候再说.
联系客服