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.多态的存在有三个必要条 ...
随机推荐
- day5-列表专区
list 列表.类li = [1, 12, 9, "age", ["88", ["19", 10], "方法"], &q ...
- element - ui tree
一行代码两行泪,没有外网真可怕!好久没写博客了,更新一把. <template> <div> <el-tree :data="data" :props ...
- java 深拷贝与浅拷贝
yls 2019年11月07日 拷贝分为引用拷贝和对象拷贝 深拷贝和浅拷贝都属于对象拷贝 浅拷贝:通过Object默认的clone方法实现 实现Cloneable接口 public class She ...
- springboot封装JsonUtil,CookieUtil工具类
springboot封装JsonUtil,CookieUtil工具类 yls 2019-9-23 JsonUtil public class JsonUtil { private static Obj ...
- Ubuntu字符界面与图形界面的切换
1.按ALT+CTRL+F1切换到字符界面 2.按ALT+CTRL+F7切换到图形界面
- hdu 1385 Minimum Transport Cost (Floyd)
Minimum Transport CostTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...
- Jmeter使用代理录制web
Jmeter有录制功能,录制HTTPs需要增加一个证书配置,录制步骤如下: 1.打开jmeter,添加线程组.线程组右键,逻辑控制器>录制控制器 工作台 右键 非测试元件 >HTTP代理服 ...
- tomcat-9.0.20部署后输出窗口乱码解决方案
问题:启动tomcat的时候,窗口乱码,默认都是UTF-8的,但是控制台是GBK的,要保持一致 可以通过控制台查看本机的编码: : 936 代表 GB2312 解决办法:打开tomcat目录下的c ...
- 程序员用于机器学习编程的Python 数据处理库 pandas 入门教程
入门介绍 pandas适合于许多不同类型的数据,包括: · 具有异构类型列的表格数据,例如SQL表格或Excel数据 · 有序和无序(不一定是固定频率)时间序列数据. · 具有行列标签的任意矩阵数据( ...
- 关于Java运行机制
目录 编译型语言与解释型语言的区别 编译型语言 解释型语言 细数两者之差别 Java的奇怪之处 Java的编译 Java的解释 具体机制 Java既是编译型语言,也是解释型语言. 首先先查找关于两种语 ...