个人 java 学习一 :抽象类 ,装拆箱

本文介绍Java中抽象类的使用方法,并通过具体示例展示如何实现多态性。文章详细解释了如何定义抽象父类及其实现类,同时探讨了装箱与拆箱的过程及其优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

个人学习:
  java 抽象类 如同现实中 对某一类事i物 抽取 他们所共同的属性和行为
 对于 行为接口 指类对外某一行为 的反应 ;
java 的装箱与拆箱
/*****
*抽象父类
*/
public abstract  class People{
   public final static  int TEADHER=0;
   public final static  int STUDENT=1;
   public abstract int getType();
   public abstract void show();
   public abstract String getName();
}


public class Student extends People{
    private String name="student";
    /**
     * 利用构造方法多态性 数量与 参数类型不同    设置属性,对于 不重要属性 可设默认值 
     * 也可类似 javaBean
     */
    public Student(String name){
    this.name=name;
    }
@Override
public int getType() {


return People.STUDENT;
}




@Override
public String getName() {
return name;
}
    public String getStudentOther(){
    return "studentOther";
    }




@Override
public void show() {
System.out.println("我是学生"+name);
}
}


public class Teacher extends People{
   private String name="teacher";
   public Teacher(String name){
    this.name=name;
   }
@Override
public int getType() {


return People.TEADHER;
}




@Override
public String getName() {
return name;
}
public String getTeacherOther(){
    return "teacherOther";
   }




@Override
public void show() {
System.out.println("我是老师"+name);
}
}




public static void main(String[] agrs){
People p=new Student("a");
//无需关注其显示细节 ,由类自身表现
p.show();
p=new Teacher("b");
p.show();


/****
* 装箱  拆箱方式
*/
//在某个  生成People子类的  类方法中
Student student=new Student("a");
People p2=(People)student;
Teacher teacher=new Teacher("a");
People p3=(People)student;
//对于 p2,p3 都可方便的以都为People,反射机制 时 通过 配置文件 加入 新增 子类型
//传递或 存储时  适合 对于 某些 处理类 只需 people的公共属性 行为 时


//但是 对于一些类 必须获取 people所对应 子类 特有属性时
//此时 可通过 拆箱方式  (强制类型转换) 当然 得知道其 原来 是哪个子类的实例
String s=p2.getType()==People.TEADHER?((Teacher)p2).getTeacherOther():((Student)p2).getStudentOther();
System.out.println(s);


/**
* 不好之处
* 拆箱时 必须明确 自 原来是哪个子类 的 实例引用,否则 会有异常抛出
* 故 通过 getType()判断 ,作为 使用 时 的 约定
* 但随着类型的 增多 判断增加。  


*/
}
/****程序结果***/
我是学生a
我是老师b
studentOther

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值