java抽象类的属性_JAVA 抽象类

一、抽象类的概念

C extends B, B extends A 在继承过程中,形成了一个继承金字塔。位于金字塔底部的类越来越具体(强大),位于金字塔顶部的类越来越抽象(简单)。

例如:人类继承于(属于)动物类,鱼类继承于(属于)动物类。人类有睡觉(闭眼睡)的方法,鱼类有睡觉(睁眼睡)的方法。动物类也有睡觉的方法,但动物类是人类和鱼类的父类,因此形容动物类睡觉的方法过于抽象,不确定如何去形容,此时可以将动物类睡觉方法定义为抽象方法。

即,当一个类中的方法过于抽象时,不确定如何去实现,此时可以把该方法定义为抽象方法。

抽象方法所在的类过于抽象,称为抽象类(abstract class)。写法如下

public abstract class 类名{

}

二、抽象类的特性

[1]抽象类过于抽象,不能实例化(实例化后无语义)。

public abstract class Animal{

private String name;

public void setName(String name){

this.name = name;

}

public String getName(){

return this.name;

}

public Animal(){

}

public Animal(String name){

this.name = name;

}

public void sleep(){

}

}

[2]如果一个方法过于抽象,无法实现,则需要把该方法定义为抽象方法。写法如下

public abstract void sleep();

抽象方法一定位于抽象类中。

抽象方法没有方法体。

抽象类中的方法不一定都是抽象方法。

package cn.exercises01;

public abstract class Moto {

//定义子类中共有的属性

private String no;

private String brand;

//设置属性访问

public String getNo() {

return no;

}

public void setNo(String no) {

this.no = no;

}

public String getBrand() {

return brand;

}

public void setBrand(String brand) {

this.brand = brand;

}

//无参构造

public Moto() {

super();

}

//有参构造

public Moto(String no, String brand) {

super();

this.no = no;

this.brand = brand;

}

//抽象方法

public abstract int eachRates(int days);

}

[3]子类继承抽象类,一定要根据自身情况重写抽象类的抽象方法,除非子类也是抽象类。

package cn.exercises01;

import static cn.exercises01.CarType.*;

//定义子类Car继承于父类

public class Car extends Moto {

// 设置子类Car自己的属性

private String type;

// 设置访问属性

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

// 无参构造

public Car() {

super();

}

// 有参构造

public Car(String no, String brand, String type) {

super(no, brand);

this.type = type;

}

//继承抽象类,抽象方法重写

public int eachRates(int days) {

int money = 0;

String info = super.getBrand() + this.type;

if (info.equals(BUCK_GL8)) {

money = days * 600;

} else if (info.equals(BMW_550I)) {

money = days * 500;

} else if (info.equals(BUCK_ROAD)) {

money = days * 300;

}

return money;

}

}

三、重写和实现

重写(override):当子类继承父类的方法不能满足其自身的需要时,子类重写父类的同名方法。

实现(implement):子类继承抽象父类时,一定要重写父类的抽象方法,此时父类的抽象方法没有方法体,也即没有实现;子类一定重写父类的抽象方法也即实现了父类的抽象方法。

实现是一种特殊的重写。实现建立在重写的继承上

四、Final关键字

final 是一个java的关键字,用于修饰局部变量、属性、方法、类,表示最终的意思。

[1] final修饰类表示最终类,无法被继承。

[2] final修饰符方法,方法就不能被重写。

[3] final 修饰属性,经常和static搭配使用,形成静态常量。

[4] final修饰变量

final 修饰基本数据类型 ,表示a中的内容(值)不能被改变,

final int a = 10;

final 修饰引用数据类型,表示person中的内容(地址)不能被改变。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值