抽象类和接口是Java面向对象中最重要的概念,如果说不懂抽象类和接口,那么对于面向对象的理解就是0分。
1,为抽象类和接口实例化
在Java中,可以通过对象的多态性为抽象类和接口实例化,这样
在使用抽象类和接口的时候就可以调用子类所覆写过的方法。
之所以抽象类和接口不能直接实例化是因为其内部包含了抽象方法,
抽象方法都是未实现的方法,无法直接调用。
通过对象多态性可以发现,子类发生了向上转型之后,所调用的全部方法
都是被覆写过的方法。
abstract class A{
// 定义抽象类A
public abstract void print() ; // 定义抽象方法print()
};
class B extends A {
// 定义子类,继承抽象类
public void print(){ // 覆写抽象方法
System.out.println("Hello World!!!") ;
}
};
public class AbstractCaseDemo01{
public static void main(String args[]){
A a = new B() ; // 通过子类为抽象类实例化
a.print() ;
}
};
interface A{
// 定义接口A
void print() ; // 定义抽象方法print()
};
class B implements A {
// 定义子类,实现接口
public void print(){ // 覆写抽象方法
System.out.println("Hello World!!!") ;
}
};
public class InterfaceCaseDemo01{
public static void main(String args[]){
A a = new B() ; // 通过子类为抽象类实例化
a.print() ;
}
};
要使用抽象类和接口就得按照这样的使用方式进行(通过子类进行使用),否则是无法进行使用的。
2,抽象类的应用—-定义模板
2-1:场景1,
abstract class Person{
private String name ; // 定义name属性
private int age ; // 定义age属性
public Person(String name,int age){
this.name = name ;
this.age = age ;
}
public String getName(){
return this.name ;
}
public int getAge(){
return this.age ;
}
public void say(){ // 人说话是一个具体的功能
System.out.println(this.getContent()) ; // 输出内容
}
public abstract String getContent() ; // 说话的内容由子类决定
};
class Student extends Person{
private float score ;
public Student(String name,int age,float score){
super(name,age) ; // 调用父类中的构造方法
this.score = score ;
}
public String getContent(){
return "学生信息 --> 姓名:" + super.getName() +
";年龄:" + super.getAge() +
";成绩:" + this.score ;
}
};
class Worker extends Person{
private float salary ;
public Worker(String name,int age,float salary){
super(name,age) ; // 调用父类中的构造方法
this.salary = salary ;
}
public String getContent(){
return "工人信息 --> 姓名:" + super.getName() +