JAVA面向对象-----抽象类
来源:互联网 发布:如何用python做贪吃蛇 编辑:程序博客网 时间:2024/05/16 11:08
1抽象类
为什么使用抽象类
1:定义Dog类
有颜色属性和叫的方法
2:定义Bird类
有颜色属性和叫的方法
3:定义其父类Animal
1:颜色的属性可以使用默认初始化值。
2:叫的方法在父类中如何定义?1:狗是旺旺
2:鸟是叽叽喳喳
3:可以将父类的方法定义为狗叫让鸟继承父类重写叫的方法1:鸟怎么确定是否要重写父类方法。
2:不重写,编译和运行都没有问题,只是执行鸟叫的方法就会出现狗叫4:父类的方法很难确定。
class Animal { String color; void shout(){ //如何定义呢?是旺旺还是叽叽喳喳? }}class Dog extends Animal { void shout() { System.out.println("旺旺"); }}class Bird extends Animal { void shout() { System.out.println("叽叽喳喳"); }}
使用abstract
抽象类
当描述一个类的时候,如果不能确定功能函数如何定义,那么该类就可以定义为抽象类,功能函数应该描述为抽象函数。
5:抽象类的实现方式
1:定义animal类
1:定义叫的方法,无法确定方法体,不写方法体
1:public void shout (); 编译失败
2:根据提示在shout的方法加入abstract修饰
1:编译失败,有新的提示
3:根据提示将类加入abstract修饰
1:编译通过
abstract class Animal { String color; abstract void shout();}class Dog extends Animal { void shout() { System.out.println("旺旺"); }}class Bird extends Animal { void shout() { System.out.println("叽叽喳喳"); }}
抽象类的特点
1:有抽象函数的类,该类一定是抽象类。
2:抽象类中不一定要有抽象函数。
3:抽象类不能使用new创建对象1:创建对象,使用对象的功能,抽象类的方法,没有方法体。
4:抽象类主要为了提高代码的复用性,让子类继承来使用。
5:编译器强制子类实现抽象类父类的未实现的方法。1:可以不实现,前提是子类的也要声明为抽象的。
抽象的优点
1:提高代码复用性
1:强制子类实现父类中没有实现的功能
2:提高代码的扩展性,便于后期的代码维护
抽象类不能创建对象,那么抽象类中是否有构造函数?
1:抽象类中一定有构造函数。主要为了初始化抽象类中的属性。通常由子类实现。
9:final和abstract是否可以同时修饰一个类?
一定不能同时修饰。
abstract class Animal { String name; // 抽象类可以有构造函数 Animal() { } Animal(String name) { this.name = name; } abstract void shout();}class Dog extends Animal { Dog() { } Dog(String name) { super(name); } void shout() { System.out.println("旺旺"); }}class Demo3 { public static void main(String[] args) { // 抽象类不能创建对象 // Animal a=new Animal(); Dog d = new Dog("旺财"); System.out.println(); }}
2:抽象练习
1:定义抽象类MyShape(图形)
1:定义抽象方法获取图形的长度和面积
2:定义子类Rect继承父类MyShape
1:定义自身特有的长和宽(成员变量) width height;
2:实现父类未实现的函数。3:定义子类 Circle实现父类MyShape
1:定义自身特有的半径和圆周率(使用常量)
2:实现父类为实现的方法。
/* } 2:抽象练习 1:定义抽象类MyShape(图形) 1:定义抽象方法获取图形的长度和面积 2:定义子类Rect继承父类MyShape 1:定义自身特有的长和宽(成员变量) width height; 2:实现父类未实现的函数。 3:定义子类 Circle实现父类MyShape 1:定义自身特有的半径和圆周率(使用常量) 2:实现父类为实现的方法。 */abstract class MyShape { abstract double getLen(); abstract double getArea();}class Rect extends MyShape { double width; double height; Rect() { } Rect(double width, double height) { this.width = width; this.height = height; } double getLen() { return 2 * (width + height); } double getArea() { return width * height; }}class Circle extends MyShape { double r; public static final double PI = 3.14; Circle() { } Circle(double r) { this.r = r; } double getLen() { return 2 * PI * r; } double getArea() { return PI * r * r; }}class Demo4 { public static void main(String[] args) { Rect r = new Rect(5, 5); System.out.println(r.getLen()); System.out.println(r.getArea()); System.out.println(); Circle c = new Circle(5); System.out.println(c.getLen()); System.out.println(c.getArea()); }}
【正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!下面有个“顶”字,你就顺手把它点了吧(要先登录CSDN账号哦 )】
—–乐于分享,共同进步!
—–更多文章请看:http://blog.csdn.net/duruiqi_fx
- JAVA面向对象-----抽象类
- Java面向对象-抽象类
- 【java】面向对象(类、抽象类、接口
- java面向对象,接口和抽象类.
- JAVA-面向对象之抽象类
- java面向对象-抽象类abstract
- java面向对象-抽象类示例
- java面向对象(十五) 抽象类
- 黑马程序员------java面向对象、抽象类
- java面向对象(抽象类)
- Java面向对象抽象类应用
- java面向对象二:抽象类、接口
- JAVA面向对象-----抽象类注意细节
- Java面向对象抽象类实例
- java面向对象 继承与抽象类
- Java面向对象(6)抽象类
- Java面向对象(四)抽象类
- java-面向对象编程-抽象类
- ---Jsp(六)标签
- Codeforces #362(Div.2)-> E.PLEASE(快速幂+费马小定理)
- JDNI配置数据库连接池
- Codeforces-B.Soldier and Badges - Codeforces Round #304 (Div. 2)
- JAVA集合体系回顾
- JAVA面向对象-----抽象类
- HDU3507 Print Article
- PAT (Basic Level) Practise-1016
- 四大组件之Activity
- 初窥渗透--IIS6.0解析漏洞
- 码神学习作业(数组)
- 把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
- jsp1
- BestCoder Round #84 <LIS 2进制 思维>