一种专门用来作父类的类——抽象类

1.抽象类的声明:

 1 abstract class Book
 2 {
 3     String name;//属性
 4     int price;
 5     public void printName()//普通方法
 6     {
 7         System.out.println("书名:"+name);
 8     }
 9     public abstract void printPrice();//抽象方法
10 }

2.抽象类不能直接实例化:

Book book = new Book();//错误的,Book是抽象类

3.抽象方法只需声明,不需实现:

public abstract void printPrice(int price);//抽象方法

4.抽象类的使用:必须有子类。

抽象类的子类必须重写全部的抽象方法后才能被实例化。

 1 abstract class Book
 2 {
 3     String name;//属性
 4     int price;
 5     String press;
 6     public void printName(String name)//普通方法
 7     {
 8         System.out.print("书名:"+name);
 9     }
10     public abstract void printPrice(int price);//抽象方法
11 }
12 class Readers extends Book
13 {
14     public void printPrice(int price)
15     {
16         System.out.println("  价格:"+price+"元");
17     }
18 }
19 class Writer extends Book
20 {
21     public void printPrice(int price)
22     {
23         System.out.print("  价格:"+price+"元");
24     }
25     public void printPress(String press)
26     {
27         System.out.print("  出版社:"+press);
28     }
29 }
30 public class T03
31 {
32     public static void main(String[] args)
33     {
34         Readers r = new Readers();
35         Writer w = new Writer();
36         r.printName("《基督山伯爵》");
37         r.printPrice(20);
38         w.printName("《欧亨利短篇小说集》");
39         w.printPrice(30);
40         w.printPress("新华出版社");
41     }
42 }

输出结果:

书名:《基督山伯爵》 价格:20元
书名:《欧亨利短篇小说集》 价格:30元 出版社:新华出版社

5.外部抽象类不能用static声明,但内部抽象类可以。

 1 abstract class Book
 2 {
 3     public abstract void print();
 4     static abstract class Name
 5     {
 6         public abstract void getName();
 7     }
 8 }
 9 class Readers extends Book.Name
10 {
11     public void getName()
12     {
13         System.out.println("《茶花女》");
14     }
15 }
16 public class T03
17 {
18     public static void main(String[] args)
19     {
20         Book.Name name = new Readers();
21         name.getName();
22     }
23 }

6.抽象类应用——模板设计模式。

举一个例子:

现在有三类事物丈夫、妻子、儿子,这三类事物可以完成的功能如下。

丈夫:吃饭、睡觉、工作、锻炼。

妻子:吃饭、锻炼、睡觉。

儿子:吃饭、睡觉、学习。

参考文献:《Java从入门到精通》第2版。

时间: 2024-11-11 09:32:28

一种专门用来作父类的类——抽象类的相关文章

两种简单实现菜单高亮显示的JS类(转载)

两种简单实现菜单高亮显示的JS类 近期在写一个博客管理后台的前端,涉及在同一页面两种高亮显示当前菜单的需求.记得当年写静态页时,为了实现高亮都是在每个页面加不同的样式,呵.高亮显示我觉得对于web前端来说,是比较常用到的效果,正好此次又要用到,特地整理出我所写的两种高亮类. 其实思路很简单,第一种方法是通过遍历链接组的href值,通过indexOf判断href值是否被包含在浏览器当前url值中.此方法有一定局限,比如对于iframe内的菜单是不能这样判断的; 第二种方法适用范围更广一样,实现思路

JavaSE8基础 final 最终类,就不能作为其他类的父类(基类)

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: /* final 修饰类. 这个类是最终类,就不能作为其他类的父类(基类)了 */ final class Father { } class Son extends Father{ } class Demo { public static void main(String[] agrs) { } } 结果:

C#1(.net和C#的关系、VS与.net的对应关系、VS2012常用的几种应用程序、C#定义一个类的方法、类页面内容的解释、定义Person的类、调用Person类的方法、命名规范、数值类型)

1..net和C#的关系 .net是一个开发平台,C#是应用在.net平台上的一种语言.   2.VS与.net的对应关系  3.VS2012常用的几种应用程序 第一种是Windows窗体应用程序,也即是我们常用的C/S端的应用软件: 第二种是控制台应用程序,主要是用来学习调试C#代码的(老师上课应用的模式): 第三种是空Web应用程序,建立空的网页模式,B/S模式: 第四种是Web 窗体应用程序,建立后会生成一些常用的网页组件和功能,例如JS.image等,也是B/S模式. 4.C#定义一个类

几种分类问题的区别:多类分类,多标签分类,多示例学习,多任务学习

多类分类(Multiclass Classification) 一个样本属于且只属于多个类中的一个,一个样本只能属于一个类,不同类之间是互斥的. 典型方法: One-vs-All or One-vs.-rest: 将多类问题分成N个二类分类问题,训练N个二类分类器,对第i个类来说,所有属于第i个类的样本为正(positive)样本,其他样本为负(negative)样本,每个二类分类器将属于i类的样本从其他类中分离出来. one-vs-one or All-vs-All: 训练出N(N-1)个二类

Python类三种方法,函数传参,类与实例变量(一)

1 Python的函数传递: 首先所有的变量都可以理解为内存中一个对象的'引用' a = 1 def func(a): a = 2 func(a) print(a) # 1 a = 1 def fun(a): print("函数里",id(a)) # 函数里 41322472 a = 2 print("赋值后",id(a), id(2)) # 赋值后 41322448 41322448 print("函数外",id(a), id(1)) # 函数

thinkPHP17---操作绑定到类

首先要配置: "ACTION_BIND_CLASS"=>"TRUE"; 控制器类的定义如下: namespace Home\Controller\Index; use Think\Controller; class index extends Controller{ public function run(){ echo '执行Index控制器的index操作'; } }

一种简单易用的C++进程类

一 代码结构 二 代码 1. posix_process.h /************************************************************************* > File Name: posix_process.h > Author: wangzhicheng > Mail: [email protected] > Created Time: Thu 12 Feb 2015 07:35:34 PM WST ***********

一种简单易用的C++线程类

一 代码结构 二 代码 1. threadobject.h /************************************************************************* > File Name: threadobject.h > Author: wangzhicheng > Mail: [email protected] > Created Time: Sat 07 Feb 2015 10:13:33 PM WST *************

五种内部类形式将线程隐藏于类中

1.使用普通内部类继承Thread类 public class ThreadTestOne { private int countDown = 5; private Inner inner; private class Inner extends Thread{ Inner(String name){ super(name); start(); } public void run(){ while(true){ System.out.println(this); if(--countDown =