这是第五次课后的总结。这次课学的是类的继承。
内容有:
1.类继承的实现和作用
前面已经学了类的语法格式,现在学了类的继承。类的继承是用extends关键字。
示例:
public class UNStudent extends Student{
//方法和属性
}
类的继承作用:子类继承父类后,子类会继承父类的属性和方法,根据需要子类可以重写父类的 方法。
注意点:除了private修饰的属性和方法不能被继承,public,protected以及不加修饰符的方法以及属性都能被子类继承。
//父类Student
public class Student {
private String name;//子类不能继承使用该属性
protected int age;
public void setName(String name) {
this.name = name;
}
void setAge(int age) {
this.age = age;
}
//子类不能调用该方法,如过要调用,那么在子类中必须重写这个方法
private String getName(){
return this.name;
}
int getAge(){
return age;
}
}
2.接口
接口定义的关键字是interface;
public interface 接口名{
//接口中定义的方法
//方法没有方法体,也就是方法不能有具体的实现
//方法示例
public void study();
//每一个方法都没有{},{}指的是有具体的方法实现。
}
不论方法的修饰符有没有public,接口都默认它是public。
类实现这个接口后,子类必须重写接口中的方法。这也是接口的特性,它的作用也在此得到体现 ,这一特性可以防止我们漏写接口中的方法。
接口中只有常量,一般定义格式是:
public static final String name;
static 表示这是静态的,该属性可以直接用类名调用而不需要类的实例化对象;
final 表示的是name是不能再被赋值,不能改变的。
接口不能用来创建对象。
3.抽象类
抽象类是介于类和接口之间的。因为接口被子类实现后,子类必须重写接口中所有的方法,而有些时候我们并不需要使用到接口中所有的方法,所以就加入了抽象类,它可以让我们对接口中的方法选择性的重写和使用。
抽象类定义格式:
pubic abstract class 类名{
//定义属性和方法
}
//不能使用abstract去定义属性,
如:abstract protected String time;这是错误的。
子类继承抽象类用extends关键字,子类继承抽象类后,如果抽象类中的方法用abstract修饰的, 那么子类必须重写这些方法。
抽象类也不能创建对象,因为抽象类中可能有abstract修饰的方法,这种方法是没有具体实现的 。可以这么理解,因为接口和抽象类中含有没有具体实现的方法,所以是不能创建对象的。
abstract和private关键字不能同时使用,如:
abstract private void play();这是不对的。abstract可以和public、protected连用,abstract后也可不接修饰符,它会默认是public。