java 08
1、Abstract关键字
java为了表示现实生活中抽象的概念集合,提供了一个关键字给我们使用:abstract
abstract 抽象的
可以修饰类,修饰成员方法
1. 被abstract修饰的类是抽象类, 抽象类不能被实例化
2. 被abstract修饰的方法是抽象方法, 抽象方法不能有大括号实现
3. 在抽象类,既可以存在具体实现的方法, 也可以存在抽象方法
4. 若一个类中有抽象方法, 这个类一定是一个抽象类
5. 当一个具体的类继承一个抽象类, 必须要实现抽象类中的所有抽象方法
6. 当一个抽象类继承一个抽象类的时候, 可以选择性地是否重写抽象方法
抽象类与类中成员的关系:
成员变量: 抽象类既可以存在变量, 也可以存在常量
构造方法: 可以存在构造方法, 是为了将来在继承关系做初始化的作用
成员方法: 既可以是具体的实现方法, 也可以是抽象方法
abstract不能和哪些关键字共存
final 不能共存
static 不能共存
private 不能共存
abstract class ShuJia{
// abstract final void fun1(); // 非法的修饰符组合: abstract和final
// abstract static void fun1(); // 非法的修饰符组合: abstract和static
// private abstract void fun1(); // 非法的修饰符组合: abstract和private
}
public class AbstractDemo3 {
public static void main(String[] args) {
}
}
抽象案例
/*
假如我们在开发一个系统时需要对员工类进行设计,员工包含3个属性:姓名、工号以及工资。
经理也是员工,除了含有员工的属性外,另为还有一个奖金属性。
请使用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。
*/
abstract class Staff{
String name;
String id;
int salary;
public Staff() {
}
public Staff(String name, String id, int salary) {
this.name = name;
this.id = id;
this.salary = salary;
}
public abstract void work();
}
class Worker extends Staff{
public Worker() {
}
public Worker(String name, String id, int salary) {
super(name, id, salary);
}
@Override
public void work() {
System.out.println("普通员工敲代码");
}
}
class Manager extends Staff{
int common;
public Manager() {
}
public Manager(String name, String id, int salary, int common) {
super(name, id, salary);
this.common = common;
}
@Override
public void work() {
System.out.println("经理做PPT");
}
}
public class AbstractTest {
public static void main(String[] args) {
Staff s1 = new Worker("李刚", "sj1001", 10000); // 抽象多态
s1.work();
Staff s2 = new Manager("江川","sj1002",6000,200000);
s2.work();
}
}
2、Interface 接口
接口:表示一个类的额外功能的实现
java提供了一个关键字表示接口:interface
接口我们可以将它看作成一个特殊的类, 因为接口也会被编译成一个class文件
接口注意事项:
1. 接口中只能存在抽象方法, jvm默认会在方法前使用public abstract进行修饰, 刚学java推荐加上
2. 类和接口是实现关系 可以通过关键字implements实现接口
3. 当一个具体的类实现一个接口的时候, 必须要实现接口中所有的抽象方法
4. 若一个抽象类实现一个接口的时候,可以选择性地实现接口中的抽象方法
5. 一个类可以同时实现多个接口,使用逗号隔开
6. 接口和接口存在继承关系, 并且一个接口可以同时继承多个接口
7. 接口中只能定义常量, 默认修饰符为public static final
8. 接口无法实例化, 接口中不能出现构造方法
面试题:
java中允许多继承吗?
若是类和类之间的继承,只能单继承,不能多继承
若是接口与接口之间的继承,可以多继承
标签:Java,String,abstract,接口,day,public,抽象,抽象类,08
From: https://www.cnblogs.com/qianzhiqiang798/p/18468035