抽象类和接口的应用

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值