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.多态的存在有三个必要条 ...
随机推荐
- PHP判断是否为手机端的方法
PHP判断是否为手机端的方法 private function ismobile() { // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset($_SERVER['HT ...
- activmq点对点(简单写法)
开发环境 我们使用的是ActiveMQ 5.11.1 Release的Windows版,官网最新版是ActiveMQ 5.12.0 Release,大家可以自行下载,下载地址. 需要注意的是,开发时候 ...
- java多线程回顾4:线程通信
1.线程的协调运行 线程的协调运行有一个经典案例,即生产者和消费者问题. 假设有一个货架,生产者往货架上放货物,消费者从货架上取货物. 为了方便讲解,制定一个规则,生产者每放上一个货物,消费者就得取走 ...
- 如何查看当前linux服务器是否支持虚拟化
[root@localhost ~]# grep -E '(svm|vmx)' /proc/cpuinfo 或者: [root@localhost ~]# cat /proc/cpuinfo 找到fl ...
- jquery 判断数组是否为空
jquery 判断数组是否为空 if (data.length === 0) { console.log("数组为空"); }
- 【前端知识体系-CSS相关】Bootstrap相关知识
1.Bootstrap 的优缺点? 优点:CSS代码结构合理,现成的代码可以直接使用(响应式布局) 缺点:定制流程较为繁琐,体积大 2.如何实现响应式布局? 原理:通过media query设置不同分 ...
- hostnamectl命令 主机名 host相关命令
hostnamectl set-hostname CentOS7设置主机名为CentOS7 hostnamectl status查看主机系统信息 注:host+TAB查阅host相关的所有命令 hos ...
- HTML_本地存储
在HTML5当中,新增了很多的存储方式,这里我先介绍两种,方便我们的使用和操作,具体新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问 ...
- zip的压缩和解压命令
以下命令均在/home目录下操作cd /home #进入/home目录 1.把/home目录下面的data目录压缩为data.zip zip -r data.zip data #压缩data目录 ...
- Filebeat自定义索引 && 多output过滤
一.目标 1)实现自定义索引 2)不同的input输出到各自对应的索引,nginx的日志输出到index-nginx的索引,zabbix的日志输出到index-zabbix,app的日志输出到inde ...