首页 > 编程语言 >Java知识27 抽象类【多测师】

Java知识27 抽象类【多测师】

时间:2022-10-26 11:02:32浏览次数:46  
标签:27 Java String private 抽象 Employee 抽象类 方法

一、在Java中一起都是对象,所有的对象都是通过类来描绘的,但不是所有的类都是用来描绘对象的,一个类中没有足够的信息描绘一个具体的对象就是抽象类
特点:
1.抽象类不能实例化对象
2.抽象类的其他功能,成员变量,成员方法,构造方法的访问方式和普通类一样
3.抽象不能实例化对象,所以类必须被继承才能使用
4.父类包含子类集合的常见方法,由于父类本身是抽象的,所以这些方法不能使用
5.Java中抽象类表示是继承关系,一个类只能继承一个抽象类,一个类可以实现多个接口

二、抽象类定义方法:abstract class
public abstract class Employee{
private String name;
private String address;
private int number;
public Employee(String name, String address, int number)
{
System.out.println("Constructing an Employee");
this.name = name;
this.address = address;
this.number = number;
}
}
实例化这个对象会报错,所以只能通过继承的方法来继承抽象类
/* 以下是不允许的,会引发错误 */
Employee e = new Employee("George W.", "Houston, TX", 43);

三、继承抽象类
public class Salary extends Employee{
private double salary; //Annual salary
public Salary(String name, String address, int number, double salary) {
super(name, address, number);
setSalary(salary); }}
1.可以通过一般的方法继承抽象类Employee
2.不能实例化一个Employee类的对象,但可以实例化一个Salary类对象,该对象可以从Employee类继承7个成员方法,且通过这个方法可以设置或获取三个成员变量

四、抽象方法
设计一个类,该类包含一个特别的成员方法,该方法的具体实现由它的子类确定,那么你可以在父类中声明该方法为抽象方法。
abstract关键字可以用来声明抽象方法,抽象方法只包含一个方法名,没有方法体
抽象方法没有定义,方法名后面直接+分号,没有大括号
public abstract class Employee
{
private String name;
private String address;
private int number;

public abstract double computePay();//抽象方法只有方法名没有方法体
//方法名后面加分号,没有花括号
//其余代码
}

五、声明抽象方法造成的结果:
1.包含抽象方法,该类为抽象类,但抽象类不一定包含抽象方法
2.任何子类必须重写父类的抽象方法,或者声明自身为抽象类
3.继承抽象方法的子类必须重写该方法
4.抽象类不能被实例化
5.抽象类中的抽象方法只是声明,不包含方法体,不给出方法的具体实现和具体功能
6.构造方法,类方法(用static修饰的方法)不能声明为抽象方法
7.抽象类的子类必须给出抽象类中抽象方法的具体实现,除非该子类也是抽象类

 



标签:27,Java,String,private,抽象,Employee,抽象类,方法
From: https://blog.51cto.com/u_15846941/5797420

相关文章

  • Java知识26 多态 (重点巩固)【多测师】
    一、多态多态就是同一个行为有多个不同表现形式和形态的能力比如:flash界面按F1按键弹出是AS3帮助文档在Word下弹就是Word帮助二、多态存在的三个必要条件继承、重写、父类......
  • 力扣561(java&python)-数组拆分(简单)
    题目:给定长度为 2n 的整数数组nums,你的任务是将这些数分成 n对,例如(a1,b1),(a2,b2),...,(an,bn),使得从1到 n的min(ai,bi)总和最大。返回该最大......
  • java.sql.SQLException: MONTH 报错解决方法
    idea控制台报错:java.sql.SQLException:MONTHErrorattemptingtogetcolumn'xxx'fromresultset.Cause:java.sql.SQLException:MONTH;MONTH;nestedexceptio......
  • JAVA--Map介绍和常用方法
    Map     接口实现类Node转换为接口Entry,属于动态绑定,向上转型。Object引用转为子类是向下转型  这就是一个Entry接口的引用指向了它实现类Node的对象(接口......
  • JAVA 进阶完结
    1.接口  这个类中有了新的关键字abstract并且里面的方法没有括号这样的类 上图就是抽象函数与抽象类 那么继承抽象类的子类需要做什么工作呢  2.代......
  • JAVA---Set集合底层源码分析
    1.Set集合介绍      常用方法,添加,删除和遍历 Set接口对象不能使用索引获取,他是无序的,没有索引。set集合无序,所以没有修改和查看某个元素,因为某个位置上是......
  • 力扣122(java&python)-买卖股票的最佳时机 II(中等)
    题目:给你一个整数数组prices,其中 prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有一股股票。你也......
  • Mac安装Opencv带Java版本
    使用Homebrew安装OpenCV4brewinstallopencv进入安装目录cd/usr/local/Cellar/opencv首先检查ApacheAnt有没有安装,没有的话就用homebrew安装:brewinsta......
  • win7 java环境变量配置
    1.准备一台电脑网络2.查看电脑配置选择电脑界面上的计算机(或者我的电脑电脑图标),按下鼠标右键,出现菜单,看到有’属性’这一项,点击确定查看是32位操作系统还......
  • 公司新入职一个中级 Java 开发,4 行代码写出了 3 个异常,我真的服了。。
    作者:l拉不拉米链接:https://juejin.cn/post/7031445206152577061一、前言Hello大家好,我是l拉不拉米,今天带来一个真实案例,让大家更深刻的理解空指针异常。公司刚入职了......