4.1特征:
- abstract 修饰的类是抽象类:
- 1: 抽象类不能实例化。
- 2: 抽象类中有抽象方法,子类必须重写。
- 3: 抽象类中可以有非抽象方法,不要求子类强制实现。
- 4:如果一个类中,有抽象方法,那么这个类一定是抽象类。
- 5: 如果一个类是抽象类,这个类中一定有抽象方法吗?不一定。
/**
- 宠物父类:抽象类
- @author hadoop
*/
public abstract class Pet {
private String name;
private int age;
private int health;
private int love;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
}
public int getLove() {
return love;
}
public void setLove(int love) {
this.love = love;
}
public Pet() {
super();
}
public Pet(String name, int age, int health, int love) {
super();
this.name = name;
this.age = age;
this.health = health;
this.love = love;
}
// 抽象类中有抽象方法。
public abstract void eat();
// 非抽象方法。
public void show(){
};
5接口
什么是接口?
接口不是类,interface修饰 一种数据类型。
5.1特征
接口中,可以有常量。使用static final 修饰的。默认被修饰。
接口中,可以有方法。使用abstract 修饰的。默认被修饰。
接口中,没有构造方法。
接口,不能被实例化。
一个类,如果实现两个接口,接口使用逗号分离,必须实现两个接口中所有的方法。
问题?需要你用代码去论证一下。
问:抽象类能实现接口吗? 可以。
问:接口能继承抽象类吗? 不可以。
问:抽象类能继承抽象类吗? 可以。
问:接口能继承接口吗? 可以。
接口可以继承接口: 子接口可以实现父接口里的方法。实现了子接口的类可以直接调用。
顶级提问?
抽象类和接口有什么相同点和不同点?
请根据:
属性:
接口中的属性默认被static final 修饰的常量。
抽象类中可以有变量。
接口常量只能被public default 修饰。
方法:
接口中的方法,只有默认被abstract修饰的抽象方法。
抽象类中可以有抽象方法也可以有非抽象方法。
构造方法
接口中没有构造方法。
抽象类有构造方法。
相同点:
抽象类和接口都不能实例化。
不同点: 接口只能被实现
抽象类只能被继承。
抽象类是类,接口不是类。
6final关键字
- final : 最终的。不可改变的。
- final 修饰变量。表示常量,值不能再次赋值。常量要求全部大写。
- final 修饰方法。表示方法不能被重写。
- final 修饰类。表示类不能被继承。
- final 修饰对象,当前对象不能再new实例。
- String 就是被final修饰的类,不能被继承。