关于抽象类的几个简单理解
2015-08-16 20:05
204 查看
一个类中的方法如果是抽象的话,该类就必须定义为抽象类.
抽象类不一定有抽象方法.抽象类和抽象方法必须用abstract修饰.
抽象类的子类要么是抽象类要么重写抽象类中的所有方法
抽象类不能实例化 按照多态的方式使用
abstract class Animal {public abstract void eat();}
abstract class Dog extends Animal {}
class Cat extends Animal {public void eat() {System.out.println("猫吃鱼");}}
class AbstractDemo {public static void main(String[] args) {
//Animal a = new Animal(); //无法实例化
//Dog d = new Dog(); //无法实例化
//Cat c = new Cat();
//多态
Animal a = new Cat();
a.eat();}}
抽象类的成员特点:
A.成员变量:可以是变量,也可以是常量
B.构造方法:有构造方法,但是不能实例化.
问题:构造方法有什么用? 用于子类访问父类时的初始化
C.成员方法:可以有抽象方法,也可以有非抽象方法.
抽象方法:强制要求子类做某些事情.
非抽象方法:用于给子类直接使用,提高了代码的复用性
两个问题:
1. 一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
可以.为了不让别人创建对象
2.abstract不能和哪些关键字合用?
final:final修饰的方法不能被重写,而abstract系iushi的方法要求必须被重写
private:同上
static:static修饰的方法可以通过类名调用,而abstract修饰的方法是没有方法体的,调用一个没有方法体的方法是没有
意义的,所以不能共享.
一个类中的方法如果是抽象的话,该类就必须定义为抽象类.
抽象类不一定有抽象方法.抽象类和抽象方法必须用abstract修饰.
抽象类的子类要么是抽象类要么重写抽象类中的所有方法
抽象类不能实例化 按照多态的方式使用
abstract class Animal {public abstract void eat();}
abstract class Dog extends Animal {}
class Cat extends Animal {public void eat() {System.out.println("猫吃鱼");}}
class AbstractDemo {public static void main(String[] args) {
//Animal a = new Animal(); //无法实例化
//Dog d = new Dog(); //无法实例化
//Cat c = new Cat();
//多态
Animal a = new Cat();
a.eat();}}
抽象类的成员特点:
A.成员变量:可以是变量,也可以是常量
B.构造方法:有构造方法,但是不能实例化.
问题:构造方法有什么用? 用于子类访问父类时的初始化
C.成员方法:可以有抽象方法,也可以有非抽象方法.
抽象方法:强制要求子类做某些事情.
非抽象方法:用于给子类直接使用,提高了代码的复用性
两个问题:
1. 一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
可以.为了不让别人创建对象
2.abstract不能和哪些关键字合用?
final:final修饰的方法不能被重写,而abstract系iushi的方法要求必须被重写
private:同上
static:static修饰的方法可以通过类名调用,而abstract修饰的方法是没有方法体的,调用一个没有方法体的方法是没有
意义的,所以不能共享.
相关文章推荐
- 黑苹果系统迁移
- HDU 1848(sg博弈) Fibonacci again and again
- OC学习笔记十 copy语法
- 在Linux下安装windows后解决Linux不能启动能问题
- 千万别误解黑客
- jdk&tomcat环境变量配置及同时运行多个tomcat方法
- Gym - 100637B Lunch 规律
- heibernate增删改查总结一下自己的不足
- Onclick点击事件
- 5.适配器模式(设计模式笔记)
- 【NOIP2010TG/codevs1066】 引水入城 解题报告
- 华为OJ(在字符串中找出连续最长的数字串)
- Java心得14
- 递归实现汉诺塔问题(python)
- hdu 2896
- 让linux每天定时备份MySQL数据库并删除五天前的备份文件
- 20个高级Java面试题汇总
- hibernate之增删改查demo
- 《Java设计模式》之外观模式
- 回溯--迷宫问题