java 抽象类 对象_JAVA面向对象-----抽象类

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账号哦 )】

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统。系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文中重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块图、流程表和E-R图。随后设计架构以及编写代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值