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

Java学习笔记------抽象类和抽象方法

抽象方法

  • 抽象方法:将共性的行为(方法)抽取到父类之后,由于每一个子类执行的内容是不一样的,所以,在父类中不能确定具体的方法体,该方法就可以定义为抽象方法
  • 抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类

 抽象类和抽象方法的定义格式

  • 抽象方法的定义格式:   public abstract 返回值类型  方法名(参数列表);
  • 抽象类的定义格式:public abstract class 类名{}

 抽象类和抽象方法的注意事项

  • 抽象类不能创建对象
  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
  • 可以有构造方法
  • 抽象类的子类要么重写抽象类中的所有抽象方法,要么是抽象类

 抽象类的构造方法的作用:当创建子类对象时,给属性进行赋值

抽象类的作用:抽取共性时,无法确定方法体,就把方法定义为抽象的。强制让子类按照某种格式重写,抽象方法所在的类必须是抽象类

package com.itheimaabstract;public abstract class Animal {private String name;private int age;public Animal() {}public Animal(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void drink(){System.out.println("喝水");}public abstract void eat();
}
package com.itheimaabstract;public class Frog extends Animal {public Frog() {}public Frog(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println("青蛙吃虫子");}
}
package com.itheimaabstract;public class Dog extends Animal {public Dog() {}public Dog(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println("修狗吃骨头");}
}
package com.itheimaabstract;public class Sheep extends Animal {public Sheep() {}public Sheep(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println("羊吃草");}
}
package com.itheimaabstract;public class Test {public static void main(String[] args) {Frog f=new Frog("小绿",3);System.out.println(f.getName() +","+f.getAge() );f.drink() ;f.eat() ;Dog d=new Dog("小黄",3);System.out.println(d.getName() +","+d.getAge());d.drink() ;d.eat() ;Sheep s=new Sheep("小黑",2);System.out.println(s.getName() +","+s.getAge());s.drink() ;s.eat() ;}
}

运行结果:

http://www.lryc.cn/news/165534.html

相关文章:

  • 毕业设计选题指南-25个优质选题
  • React使用useImperativeHandle实现父组件触发子组件事件
  • 【PowerQuery】Excel的PowerQuery的复制
  • 这个制作企业期刊的神器我怎么没早点发现
  • 核心实验18_ospf高级_ENSP
  • 【python零基础入门学习】python基础篇之系统模块调用shell命令执行(四)
  • 用python实现基本数据结构【01/4】
  • Ubuntu22.04 install Kafka
  • 实现JSONP请求
  • 如何将安防视频监控系统/视频云存储EasyCVR平台推流到公网直播间?
  • 使用内网负载机(Linux)执行Jmeter性能测试
  • Web自动化测试进阶 —— Selenium模拟鼠标操作
  • Python之函数
  • 泛型工具类型和操作符
  • idea中启动maven项目报错-java: 程序包lombok.extern.slf4j不存在问题如何解决
  • MyBatis-动态SQL
  • Swift学习内容精选(二)
  • 类欧笔记存档
  • 电能计量远程抄表系统的分析及在物业的应用
  • 计算机网络篇之端口
  • GO语言篇之发布开源软件包
  • Eclipse官网下载历史版本
  • SCI常见词汇表达
  • 使用ref如何获取到input标签中的值
  • 自定义Dynamics 365实施和发布业务解决方案 3. 开箱即用自定义
  • python-pytorch 关于torch.load()和torch.load_state_dict()
  • 关于批量安装多个apk
  • 【案例教学】华为云API对话机器人的魅力—体验AI垃圾分类机器人
  • go基础详解2-go run test
  • 【NVIDIA CUDA】2023 CUDA夏令营编程模型(三)