Java修炼——面向对象_抽象类和抽象方法
抽象类和抽象方法
什么是抽象类?
使用 abstract 修饰的类称为抽象类
public abstract class Person {
}
抽象类的特征
1) 抽象类不可以创建对象
2) 抽象类可以有构造方法
public abstract class Person{
public Person(){
System.out.println("Person类中的无参构造方法");
}
}
抽象类中构造方法的作用,是提供给子类调用的。
package com.bjsxt.abstractpro;
public class Student extends Person {
public Student(){
super();//调用直接父类的无参构造方法
System.out.println("Student类的无参构造方法
");
}
}
public class TestPerson {
public static void main(String[] args) {
//Person p=new Person();
Student stu=new Student();
}
}
3) 抽象类中可以包含的成员
成员变量,成员方法,静态方法,构造方法,fina修饰的方
法,抽象方法
public abstract class Person {
//(1)成员变量/实例变量/属性
private String name;//姓名
//(2)成员方法/实例方法
public void info(){
System.out.println("大家好,我叫"+name);
}
//(3)静态方法
public static void show(){
}
//(4)构造方法
public Person(){
System.out.println("Person类中的无参构造方法
");
}
//(5)final修饰的方法,只能被子类调用,不允许被子
类重写
public final void fun(){
}
使用 abstract 修饰的方法称为抽象方法
抽象方法的特征
- 抽象方法不允许有方法体,只能以分号“;”结尾
- 抽象方法只能声明在抽象类中 (含有抽象方法的类必须
是抽象类) - 抽象类中可以包含 0 个或多个抽象方法
- 抽象方法必须被子类实现
- 如果子类不能实现父类中的抽象方法,那么子类也必须 是抽象类
总结:abstract可以修饰类和方法
什么情况下使用抽象方法和抽象类
通过抽象类,可以避免子类设计的随意性。通过抽象类,
我们就可以做到严格限制子类的设计,使子类之间更加通
用。(程序的可扩展和可维护性)
什么情况下使用抽象类?父类的名称比较抽象,创建对象无
意义。
(使用多态)
Animail 动物类 –》abstract, →abstract shout()
每一种动物 ,分别实现发声的方法
package com.bjsxt.test;
public abstract class Animal {
public abstract void shout();
}
class Dog extends Animal{
@Override
public void shout() {
System.out.println("狗狗在叫:汪汪汪!");
}
}
class Cat extends Animal{
@Override
public void shout() {
System.out.println("猫在叫:喵喵喵!");
}
}
package com.bjsxt.test;
public class TestAnimal {
public static void main(String[] args) {
//父类引用指向子类对象
Animal dog=new Dog();
Animal cat=new Cat();
//调用相同方法
dog.shout();
cat.shout();
}
}

Java修炼——面向对象_抽象类和抽象方法的更多相关文章
- Java之旅_面向对象_抽象类
参考并摘自:http://www.runoob.com/java/java-abstraction.html Java抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有 ...
- Java面向对象_抽象类、接口
一.抽象类 概 念:很多具有相同特征和行为的对象可以抽象为一个类:很多具有相同特征和行为的类可以抽象为一个抽象类 关键字:abstract 规 则:1.抽象类可以没有抽象方法,有抽象方法的类必 ...
- Java 基础 面向对象和抽象类
面向对象变量 局部变量和成员变量区别 区别一:定义的位置不同 定义在类中的变量是成员变量 定义在方法中或者{}语句里面的变量是局部变量 区别二:在内存中的位置不同 成员变量存储在对内存的对象中 局部变 ...
- Java入门 - 面向对象 - 04.抽象类
原文地址:http://www.work100.net/training/java-abstract.html 更多教程:光束云 - 免费课程 抽象类 序号 文内章节 视频 1 概述 2 Java抽象 ...
- Java:【面向对象:抽象类,接口】
本文内容: 抽象类 接口 抽象类与接口的异同 首发日期:2018-03-24 抽象类: 虽然已经有了父类,但有时候父类也是无法直接描述某些共有属性的,比如哺乳类和人类都会叫,而一般来说哺乳类这个父类并 ...
- PHP面向对象之抽象类,抽象方法
抽象类,抽象方法 抽象类: 是一个不能实例化的类: 定义形式: abstract class 类名{} 为什么需要抽象类: 它是为了技术管理而设计! 抽象方法: 是一个只有方法头,没有方法体的方法 ...
- java面向对象_抽象类和接口
一.抽象类 1.抽象方法:由abstract修饰.只有定义没有方法体.用一个分号结尾. 2.抽象类: 1)包含抽象方法的类必须是抽象类 2)由abstract修饰 3)不能被实例化 4)抽象类如果不被 ...
- Java面向对象_抽象类应用——模板方法模式
概念:定义一个操作中的算法的骨架,而将一些可变部分的实现延迟到子类中.模板方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤. 去个例子分析一下这个概念: public cla ...
- Java修炼——面向对象的三大特征_多态_多态的三个必要条件
多态指的是同一个方法调用,由于对象不同可能会有不同的行为,现实生活中,同一个方法,具体实现会完全不同. 多态的要点: 1.多态是方法的多态,不是属性的多态(多态与属性无关) 2.多态的存在有三个必要条 ...
随机推荐
- docker——端口映射
端口映射 1.就是把容器的端口映射为宿主机的一个随机或者特定端口 2.使得外部用户可以访问容器服务 3.本质其实就是在底层做了iptables地址转发 4.出去的流量是做SNAT原地址转发 5.进来的 ...
- SpringBoot系列之@Conditional注解用法简介
SpringBoot系列之@Conditional注解用法简介 引用Spring官方文档的说法介绍一下@Conditional注解:Spring5.0.15版本@Conditional注解官方文档 @ ...
- Java设计模式之模板方法模式(Template)
前言: 我们在开发中有很多固定的流程,这些流程有很多步凑是固定的,比如JDBC中获取连接,关闭连接这些流程是固定不变的,变动的只有设置参数,解析结果集这些是根据不同的实体对象“来做调整”,针对这种拥有 ...
- 实现支持多用户在线的FTP程序(C/S)
1. 需求 1. 用户加密认证 2. 允许多用户登录 3. 每个用户都有自己的家目录,且只能访问自己的家目录 4. 对用户进行磁盘分配,每一个用户的可用空间可以自己设置 5. 允许用户在ftp ser ...
- 易语言 史诗级Json处理 烁_Json模块!!!!
大家好,我是键盘上的魔手 * “************************”* “** 欢迎使用烁Json模块 **”* “** 作者:键盘上的魔手 **”* “** 微信号:codervip ...
- oracle日期时间范围查询
Oracle的日期时间范围查询 字段为:字符串类型(char),长度为:10 SELECT * FROM testdatetime t WHERE = AND t.createdate >= ' ...
- VueJS学习之Vue-cli项目模板
1. 首先是学习vue时需要依赖于node.js和webpack打包工具,具体的安装如下 http://nodejs.cn/download/下载安装nodejs,具体的安装步骤不在此赘述 2. 安装 ...
- Linux菜鸟——搭建虚拟机环境
最近在学习Linux搭建服务器,但本人对于Linux一无所知,所以花了两天时间把安装,命令,控制,搭建环境等一系列操作都囫囵吞枣了一遍,但又怕自己记不住太多,所以记录下以前搭建的所有步骤,希望能提醒自 ...
- ViewPage+Fragment的使用用法
一.概述 从前面几篇文章,我们知道,实现ViewPager是要有适配器的,我们前面用的适配器是PagerAdapter,而对于fragment,它所使用的适配器是:FragmentPagerAdapt ...
- H3C交换机console登录配置 v7
一.通过con口只需输入password登陆交换机. [H3C]user-interface aux 0 设置认证方式为密码验证方式 [H3C-ui-aux0] authentication-mode ...