/*概念
  * abstract:关键字,用于修饰方法和类
  * 抽象方法:不同类的方法是相似,但是具体内容又不太一样,所以我们只能抽取他的声明,没有具体的方法体,没有具体方法体的方法就是抽象方法
  * 抽象类:有抽象方法的类必须是抽象类
*
* 注意:一个类继承了抽象类需要重写他所有的抽象方法,否则这个类就得是抽象类
*/

* 抽象类的特点:
  *抽象方法只能在抽象类里面

  * 抽象类和抽象方法必须被abstract修饰
  * 抽象类不能创建对象(不能实例化)
  * 抽象类中可以有非抽象的方法
  * 抽象类和类的关系也是继承
  * 一个类继承了抽象类要么重写所有的抽象方法,要么他自己是抽象类

* 抽象类的成员特点:
* 成员变量
* 可以有成员变量
* 可以有常量
* 成员方法
* 可以有抽象方法
* 可以有非抽象方法
* 构造方法
* 可以有构造方法的,需要对抽象类的成员变量进行初始化
*
* final:修饰类、成员变量、成员方法 */

public class AbstractDemo {
public static void main(String[] args) {
//抽象类不能创建对象(不能实例化)
// Animal a = new Animal();
Cat c = new Cat();
c.eat();
}
} abstract class Animal { //方法使用抽象方法后,类需要改为抽象类
//猫吃鱼,狗吃草。都有eat方法,但是吃的东西不一样,这时需要使用抽象方法
abstract public void eat(); // public void eat() {
// System.out.println("吃。。。");
// };
} class Cat extends Animal {
//继承了抽象类后方法和父类不同会报错,方法必须重新
// public void eat(String name) {
// System.out.println("猫吃鱼");
// } @Override
public void eat() {
System.out.println("猫吃鱼");
}
} abstract class Dog extends Animal{
//要么重新方法,要么类需要改为抽象类
public void eat(String name) {
System.out.println("狗吃草");
}
}

输出

package day2_抽象类;
/*
* 抽象类的成员特点:
* 成员变量
* 可以有成员变量
* 可以有常量
* 成员方法
* 可以有抽象方法
* 可以有非抽象方法
* 构造方法
* 可以有构造方法的,需要对抽象类的成员变量进行初始化
*
* final:修饰类、成员变量、成员方法
*/
public class AbstractDmoe2 {
public static void main(String[] args) {
Dog2 d = new Dog2();
d.brking();
d.eat();
}
} abstract class Animal2 {
String name = "哮天犬";
final int num = 10; //final 修饰的变量是固定值,不可改变。
public Animal2() { //抽象类可以有构造方法,因为需要对成员变量初始化。
System.out.println("抽象类的无参构造");
}
public Animal2(String name) {
System.out.println("抽象类有参构造");
}
public abstract void eat();
} class Dog2 extends Animal2 { @Override
public void eat() {
} public void brking() {//叫
System.out.println(name + "," + num);
}
}

输出

思考:能否在brking方法第一行加super或this?

不能,super或this是在构造方法中调用的

23 抽象类 abstract的更多相关文章

  1. php中的抽象类(abstract class)和接口(interface)

    一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 ...

  2. PHP的接口类(interface)和抽象类(abstract)的区别

    <?php /** * 接口类:interface * 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类, * 那你就会问,我怎么知道他的某个功能的实现方法是怎么 ...

  3. JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展

    JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来 ...

  4. [PHP] 抽象类abstract的回顾

    1.abstract定义为抽象的类不能被实例化. 2.它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的. 3.被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实 ...

  5. C++虚函数virtual,纯虚函数pure virtual和Java抽象函数abstract,接口interface与抽象类abstract class的比较

    由于C++和Java都是面向对象的编程语言,它们的多态性就分别靠虚函数和抽象函数来实现. C++的虚函数可以在子类中重写,调用是根据实际的对象来判别的,而不是通过指针类型(普通函数的调用是根据当前指针 ...

  6. 高级类特性----抽象类(abstract class)

    抽象类(abstract class) 随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用.类的设计应该保证父类和子类能够共享特征.有时将一个父类设计得非常抽象,以至于它没有具 ...

  7. Java中的抽象类abstract

    abstract定义抽象类 abstract定义抽象方法,只需要声明,不需要实现 包含抽象方法的类是抽象类 抽象类中可以包含抽象方法,也可以包含普通方法 抽象类不能直接创建,可以定义父类引用变量指向子 ...

  8. Day06_30_抽象类(Abstract)

    抽象类 Abstract 什么是抽象类? 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就 ...

  9. 23.1 abstract抽象类案例

    package day2_抽象类; /* * 基础班老湿,就业班老湿 * 共性 * 属性 姓名,年龄,性别 * 行为 讲课 */ public class AbstractTeacherTest { ...

随机推荐

  1. vue 开发时候 nginx绑定多个系统 爆红 sockjs-node/info?t

    如果你的浏览器,与NPM服务器,不是同一个机器(不是localhost),那么会导致这个报错. 我搜索了好久,才发现这个是可以在webpackjs里配置的(即vue.config.js): https ...

  2. CF1327D Infinite Path 题解

    原题链接 太坑了我谔谔 简要题意: 求一个排列的多少次幂能达到另一个排列.排列的幂定义见题.(其实不是新定义的,本来就是这么乘的) 很显然,这不像快速幂那样可以结合律. 既然这样,就从图入手. 将 \ ...

  3. Mock测试,结合Fiddler轻松搞定不同场景

    在平时测试过程中,总会遇到一些比较难构造的场景.比如不同平台间的同步,异常场景的构造.遇到难构造的场景时,就可以引用Mock来进行单元测试.简言之:mock测试就是在测试过程中,对于某些不容易构造或者 ...

  4. Python第六章-函数01-函数的概念和使用

    函数 为了便于程序的维护和更好的实现模块化,好的程序都会分解为很多函数. 可以这么说,对于任何的编程语言,函数都是一个非常重要的概念. python 不仅简化了函数的定义过程,而且还大量借鉴了其他函数 ...

  5. Building Applications with Force.com and VisualForce (DEV401) 中用到的Recruiting Application介绍

    1.Who uses Recruiting Application. 2. Recruiting Application Object Model

  6. 在django中如何从零开始搭建一个mock服务

    mock概念 mock 就是模拟接口返回的一系列数据,用自定义的数据替换接口实际需要返回的数据,通过自定义的数据来实现对下级接口模块的测试.这里分为两类测试:一类是前端对接口的mock,一类是后端单元 ...

  7. HDU 3303 Harmony Forever 前缀和+树状数组||线段树

    Problem Description We believe that every inhabitant of this universe eventually will find a way to ...

  8. 【SQL SERVER】锁机制

    锁定是 SQL Server 数据库引擎用来同步多个用户同时对同一个数据块的访问的一种机制. 基本概念 利用SQL Server Profiler观察锁 死锁产生的原因及避免 总结 基本概念 数据库引 ...

  9. CSS常用属性之选择器

    css选择器 序号 选择器 例子 例子描述 1 .class .intro 选择class="intro"的所有元素 2 #id #firstname 选择id="fir ...

  10. HDU 4497 GCD and LCM 素因子分解+ gcd 和 lcm

    题意: 给两个数,lll 和 ggg,为x , y , z,的最小公倍数和最大公约数,求出x , y , z 的值有多少种可能性 思路: 将x , y , z进行素因子分解 素因子的幂次 x a1 a ...