抽象类
来源:互联网 发布:淄博网站排名优化 编辑:程序博客网 时间:2024/05/22 11:48
一、抽象类:天生用来当爹的类
Java创建了一种专门用来当做父类的类,这种类称为抽象类。目的是要求设计者依据它的格式来修改并创建新的类。
注意:由于抽象类只能作为父类,所以不能直接由抽象类创建对象,只能通过抽象类派生出新的类,再由新的类创建对象。
二、抽象类定义规则
- 抽象类和抽象方法必须要用abstract关键字来修饰。
- 抽象类不能被实例化,也就是不能用new关键字去产生对象。
- 抽象方法只需声明,而不需实现。
- 含有抽象方法的类必须被声明为抽象类,抽象类的子类必须复写所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。
三、抽象类定义格式
abstract class 类名{ //定义抽象类的类名 声明数据成员; //定义一般方法 访问权限 返回值数据类型 方法名称(参数...){ ... } //end //定义抽象方法 只需声明不需实现 abstract 返回值数据类型 方法名称(参数...); //end}
注意:抽象类中方法的定义有两种:一种是一般方法,另一种是抽象方法,它是以abstract关键字为开头的方法,此方法只声明了返回值的数据类型、方法名、参数,没有方法体。
eg:FirstDemo.java
abstract class Person{ //定义了一个抽象类,类名为Person String name; //声明了三个属性 name age occupation int age; String occupation; abstract String talk(); //定义了一个抽象方法}class Student extends Person{ //定义一个类Student并继承抽象类Person public Student(String name, int age, String occupation){ //Student类的构造方法 this.name = name; this.age = age; this.occupation = occupation; } //因为这个Student类继承了抽象类Person,所以就要复写抽象类Person中所有的抽象方法 String talk() { return "学生->姓名: "+this.name+", 年龄: "+this.age+", 职业: "+this.occupation; }}class Worker extends Person{ //定义一个类Worker并继承抽象类Person public Worker(String name,int age,String occupation){ //Worker类的构造方法 this.name = name ; this.age = age ; this.occupation = occupation ; } //因为这个Student类继承了抽象类Person,所以就要复写抽象类Person中所有的抽象方法 String talk() { return "工人->姓名: "+this.name+", 年龄: "+this.age+", 职业: "+this.occupation; }}public class FirstDemo { public static void main(String[] args){ Student s = new Student("张三", 20, "学生"); Worker w = new Worker("李四", 30, "工人"); System.out.println(s.talk()); System.out.println(w.talk()); }}
运行结果:
学生->姓名: 张三, 年龄: 20, 职业: 学生
工人->姓名: 李四, 年龄: 30, 职业: 工人
与一般的类一样,抽象类中也可以拥有构造方法,但是这些构造方法必须在子类中被调用
eg:SecondDemo.java
abstract class Person{ String name; int age; String occupation; public Person(String name, int age, String occupation){ this.name = name ; this.age = age ; this.occupation = occupation ; } public abstract String talk();}class Student extends Person{ public Student(String name, int age, String occupation) { //在这里必须明确调用抽象类中的构造方法 super(name, age, occupation); } public String talk() { return "学生->姓名: "+this.name+", 年龄: "+this.age+", 职业: "+this.occupation; }}public class SecondDemo { public static void main(String[] args){ Student s = new Student("张三", 20, "学生"); System.out.println(s.talk()) ; }}
运行结果:
学生->姓名: 张三, 年龄: 20, 职业: 学生
0 0
- 抽象类 抽象函数
- 抽象类、抽象方法
- 抽象类抽象方法
- 抽象类,抽象方法
- 抽象类,抽象方法
- 抽象方法,抽象类
- 抽象类、抽象方法
- 抽象类、抽象字段、抽象方法
- 抽象类、抽象方法、抽象属性
- 13.抽象类、抽象字段、抽象方法
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- SQL基础 利用SELECT检索数据
- oracle 数据库登陆
- oracle常用数据库内置函数
- Redis 集群搭建和测试教程
- J2EE系列之Hibernate4学习笔记(四)--关联关系一对多映射
- 抽象类
- keras的backend 设置 tensorflow,theano
- WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数详解
- 最大公共子序列模板
- iOS三级列表展开,不错的开源
- hrbust 1079 I can do it(贪心)
- Spring 学习必须会的问题(面试)
- lettcode 70 Climbing Stairs
- 浅谈C#深拷贝,浅拷贝