1. 为抽象类与接口实例化
在java中可以通过对象的多态性,为抽象类和接口实例化,这样在使用抽象类和接口的时候就可以调用本类中所覆写过的方法了。
之所以抽象类和接口不能实例化,是因为其内部包含了各个抽象方法,抽象方法本身都是未实现的方法,所以无法调用。
通过对象多态性可以发现,子类发生了向上转型关系之后,所调用的全部方法都是被覆写过的方法 。
2.通过子类为抽象类实例化
举例:
public class AbstractCase {
public static void main(String[] args) {
CaseDemo caseDemo = new TestDemo();//向上转型,通过子类为抽象类实例化
caseDemo.print();
}
}
abstract class CaseDemo{
public abstract void print();
}
class TestDemo extends CaseDemo{
public void print(){
System.out.println("hello,java!!");
}
}
运行结果:hello,java!!
3. 通过子类实例化接口
public class AbstractCase1 {
public static void main(String[] args){
//通过子类为接口实例化
CaseDemo1 caseDemo1 = new TestDemo1();
caseDemo1.print();
}
}
interface CaseDemo1{
public abstract void print();
}
class TestDemo1 implements CaseDemo1{
public void print(){
System.out.println("hello,java!!");//覆写抽象方法
}
}
运行结果:hello,java!!
4.抽象类的应用-----定义模版
举例:
public class AbstractCase2 {
public static void main(String[] args){
Person person = null; //实例化person对象
Person person2 = null;//实例化person2对象
person = new Student("nishuibaichuan", 21, 98.00f);//学生是人
person2 = new Workers("张三", 33, 6000.00f);//工人是人
person.say();//学生说话的内容
person2.say();//工人说话的内容
}
}
abstract class Person{
private String name;
private int 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 Workers extends Person{//工人
private float salary;
public Workers(String name,int age,float salary){
super(name, age);
this.salary = salary;
}
public String getContent(){
return "工人信息-->姓名:" + super.getName() +
":年纪 :" + super.getAge() + ": 工资:"
+ this.salary;
}
}
运行结果:
学生信息-->姓名:nishuibaichuan:年纪 :21: 工资:98.0
工人信息-->姓名:张三:年纪 :33: 工资:6000.0