首页 > 编程语言 >Java基础——抽象类

Java基础——抽象类

时间:2022-10-08 11:03:05浏览次数:55  
标签:Java 子类 void 基础 eat Animal 抽象类 public

一、什么是抽象类 后面会有各种类来继承父类,但是并不是所有继承了父类的子类都要做同一件事的。 比如狗类和猫类都继承了动物这个父类,但是吃东西的话就不是吃一个东西。 不是抽象类就需要往方法中加方法体,然后子类在重写,抽象类的话直接就是不用加方法体,子类可以直接进行重写 二、抽象类实现 所以我们将这些方法都重写就很麻烦,所以就用抽象类来实现。

//父类动物类
public  class Animal {
    public void eat(){
        System.out.println("吃东西");
    }
}
//子类狗类
public class Dog extends Animal{
    @Override
    public void eat() {
     // TODO Auto-generated method stub
     System.out.println("狗吃骨头");
    }
}
//子类猫类
public class Cat extends Animal{
    @Override
    public void eat() {
     // TODO Auto-generated method stub
     System.out.println("猫吃鱼");
    }
}
//调用
public static void main(String[] args) {
    Dog dog = new Dog();
    dog.eat();
    Cat cat = new Cat();
    cat.eat
子类继承了抽象类的父类必重写父类中的方法,要不然会报错。
//父类动物类(或者继续抽象)
public abstract class Animal {    
    public abstract void eat();
}
//子类鱼类
public abstract class Fish {
    public abstract void eat();
}
//鱼类的子类鲨鱼
public  class Shark extends Fish{
    @Override
    public void eat() {
     // TODO Auto-generated method stub
     System.out.println("鲨鱼吃肉");
    }
}
//鱼类子类草鱼
public class GoldFish extends Fish{
    @Override
    public void eat() {
     // TODO Auto-generated method stub
     System.out.println("金鱼吃水草");
    }
}
三、注意事项 1.抽象类不能创建对象,如果创建,编译会无法通过,因为抽象类中类的方法没有方法体
public abstract class Animal{
    public abstract void eat();
    public abstract void run(){
        System.out.println("动物在跑");
    } 
    public static void main(String [] args){
        Animal animal=new Animal();//会报错
    }
}
2.抽象类中,可以有构造方法,是子类创建对象时,初始化父类成员使用的,(抽象类是不能实例化对象的,所以抽象类的构造方法自己用不了,“super()" ) 父类中有构造方法,子类必须也重写,用super来调用父类
//父类中有构造方法
public abstract class Animal {    
    String name;
    int age;
    public Animal(String name,int age){
     this.name=name;
     this.age=age;
    }
    public abstract void eat();
}
//Bird中必须加上方法和构造方法
public class Bird extends Animal{
    public Bird(String name, int age) {
     super(name, age);
     // TODO Auto-generated constructor stub
    }
    @Override
    public void eat() {
     // TODO Auto-generated method stub
     System.out.println("吃虫子");
    }
}
3.抽象类中不一定包含抽象方法,但是包含抽象方法的类必定是抽象类 4.抽象类的子类,必须重写父类中所有的抽象方法,否则,编译无法通过而报错,除非子类也是抽象类

标签:Java,子类,void,基础,eat,Animal,抽象类,public
From: https://www.cnblogs.com/YHSDDJM/p/16768284.html

相关文章

  • Flutter(四):Flutter 语言 Dart基础使用
    一、变量和常量变量vara=1;varstr='abc';常量constPI=3.14;不可变对象finalPI=3.14;finalTIME=newDateTime.now()二、流程控制语句if(year......
  • 学习PLC的15个基础
    从事电力作业的人员都知道,工业生产和科技的发展都离不开PLC的自动化控制,PLC可以广义的理解为:集中的继电器延伸控制柜,实际的生产应用中,PLC大大的节省了工业控制的成本,加强了......
  • windows10 java系统hang死_干货案例:坑爹cmd 执行jar不打印日志,服务端hang(卡住)问题...
    java系统hang死_干货案例:坑爹cmd执行jar不打印日志,服务端hang(卡住)问题...关键是设置cmd属性,去掉快速编辑模式......
  • 力扣599(java&python)- 两个列表的最小索引总和(简单)
    题目:假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。你需要帮助他们用最少的索引和找出他们共同喜爱的餐......
  • Java基础——继承
    一、继承的实现我们的子类可以通过继承获取父类的属性和方法,实例化是通过实例化的变量操作对象//定义Person类publicclassPerson{Stringname;inta......
  • Java基础——封装
    一、什么是封装封装就是对象的属性和操作结合为一个整体,和并尽可能隐藏对象内部的细节。二、为什么要封装1.为了安全,提高程序的复用性,封装就是该漏的,该藏得藏。2.如果......
  • 数据库基础
    1范式化设计1.1第一范式(1NF)无重复的列定义所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者......
  • ruby基础2
    ruby条件运算符c=(a<b)?a:b当a<b时取c=a,否则取c=b使用范围运算符截取字符串txt="cardithea"putstxt[0..3]putstxt[0...3] 转整数to_i转浮点数to_f......
  • Java读取XML文本文件
    圆周率没有尽头,风景一直在路上publicclassReadXmlFileTest{/***演示java读取xml文件*/publicstaticvoidmain(String[]args){......
  • Java学习!
    Java应用构建工具:Ant,Maven,Jekin应用服务器:Tomcat,Jetty,Jboss,Websphere,WeblogicWeb开发:Struts,Spring,Hibernate,MyBatis大数据:Hadoop安卓 Java特性优势......