当前位置: 首页 > news >正文

Java的抽象类

        当父类的某些方法需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类

package com.abstract_;public class Abstract01 {public static void main(String[] args) {}
}
//class Animal{
//    private String name;
//    public Animal(String name) {
//        this.name = name;
//    }
//    //当父类的某些方法需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类
//    public void eat(){
//        //这里的方法体内不确定要写什么,例如不确定动物都吃些什么
//    }
//}abstract class Animal{  //声明为抽象类private String name;public Animal(String name) {this.name = name;}public abstract void eat(); //声明为抽象方法
}
父类方法不确定性问题
1.考虑将该方法设计为抽象(abstract)类
2.所谓抽象方法就是没有实现的方法
3.所谓没有实现就是指,没有方法体
4.当一个类中存在抽象方法时,需要将该类声明为abstract
5.一般来说,抽象类会被继承,由其子类来实现

抽象类的介绍:

1)用abstract 关键字来修饰一个类时,这个类就叫抽象类

        访问修饰符 abstract 类名{

        }

2)用abstract关键字修饰一个方法时,这个方法就是抽象方法

        访问修饰符 abstract 返回类型 方法名(形参列表);     //没有方法体

3)抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现抽象类

4)抽象类在框架和设计模式中使用较多

抽象类使用的注意事项和细节讨论:

1)抽象类不能被实例化

2)抽象类不一定要包含abstract方法,也就是说,抽象类可以没有abstract方法

3)一旦类包含了abstract方法,则这个类必须声明为abstract

4)abstract只能修饰类和方法,不能修饰属性和其他的

5)抽象类可以有任意成员(因为抽象类也是类),比如非抽象方法,构造器,静态属性等等

6)抽象方法不能有主体,即不能实现

        /

7)如果一个类继承了抽象类,则它必须实现抽象类的所有方法,除非它自己也声明为abstract类

//如果一个类继承了抽象类,则它必须实现抽象类的所有方法,除非它自己也声明为abstract类
abstract class E{public abstract void hi();
}
abstract class F extends E {
}
class G extends F{@Overridepublic void hi() {System.out.println("泥嚎");//只要有大括号就可以成为实现,哪怕方法体内什么也没有}
}

8)抽象方法不能用private,final,static修饰,因为这些关键字都适合重写相违背的(重要)

习题:

package com.abstract_;public class AbstractExercise {public static void main(String[] args) {Employee commonEmployee = new CommonEmployee("张三","123",15000);Employee Manage = new Manager("李四","456",50000);System.out.println(commonEmployee.work());System.out.println(Manage.work());}
}
//编写一个Employee类,声明为抽象类,包含下面三个属性:name,id,salary.
//提供必要的构造器和抽象方法,work().对于Manager来说,他既是员工,还具有奖金(bonus)属性.
//请使用继承的思想,设计CommonEmployee类和Manager类
//要求类中提供必要的方法进行属性访问,实现work(),提示:"经理/普通员工 名字 工作中....."
abstract class Employee{private String name;private String id;private double salary;public Employee(String name, String id, double salary) {this.name = name;this.id = id;this.salary = salary;}public abstract String work();public String getName() {return name;}public void setName(String name) {this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}
}
class CommonEmployee extends Employee{public CommonEmployee(String name, String id, double salary) {super(name, id, salary);}@Overridepublic String work() {return "普通员工" + super.getName() + "工作中......";}
}
class Manager extends Employee{private double bonus;public Manager(String name, String id, double salary) {super(name, id, salary);}public double getBonus() {return bonus;}public void setBonus(double bonus) {this.bonus = bonus;}@Overridepublic String work() {return "经理" + super.getName() + "工作中......";}
}
http://www.dtcms.com/a/517303.html

相关文章:

  • 网站下载系统wordpress 8小时前
  • 脑电分析——认识各种波型与伪迹
  • 电商网站开发详细介绍网站底部浮动
  • PCIe协议之 Equalization篇 之 效果篇 之 眼图示例
  • 神马M50S++ 158T矿机:如何提升SHA-256挖矿性能与效率?
  • 深圳网站网络建设长沙好的做网站品牌
  • 操作系统作业二
  • ic电子网站建设免费网站优化工具
  • 美颜SDK功能开发实战:直播平台如何实现流畅美颜体验?
  • 爱胜品ICSP YPS-1133DN Pro 黑白激光打印机更换耗材后打印出现有规律黑条纹问题的描述
  • Next.js 自定义 Server
  • 网站开发工单无极网站设计
  • 【SpringBoot从初学者到专家的成长20】SpringBoot集成MongoDB:非关系型数据库的探索
  • 网站设计公司大概多少钱现在哪个网站做网站好
  • 西安市建设局官方网站快看点号自媒体平台注册
  • 脱毛仪方案开发,家用激光毛仪/电动脱毛仪MCU方案设计
  • 为什么跨数据库业务总是慢?
  • 微服务架构与SpringCloudAlibaba全解析
  • 从 “瞎埋点” 到 “精准分析”:WebTagging 设计 + 页面埋点指南(附避坑清单)
  • 重构高阶智驾:天瞳威视以国产芯片,解锁Robotaxi平民化路径
  • 网站如何做水晶按钮做装修公司的网站
  • 苏州专业网站建设设计网站正常打开速度
  • 台州品牌网站设计androidstudio开发app教程
  • 基于C++ UA Server SDK开发高性能与跨平台 OPC UA 服务器
  • 操作系统 进程(4)上下文切换与系统调用
  • Kotlin和Java在匿名内部类和接口的使用中的区别及对比
  • mysql做网站怎么查看数据库坪山住房及建设局网站
  • 河北省建设局网站网站建设公司深圳
  • Request method ‘POST‘ not supported,问题分析和解决
  • KH|记录KingHistroian4.0卸载过程