关于抽象类的笔记

抽象类

抽象类的概述

当我们在做子类共性功能抽取时,有些方法在父类中并没有具体的体现,这个时候就需要抽象类了! 在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类!

抽象里的特点

1、抽象类和抽象方法必须使用 abstract 关键字修饰
2、抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
3、抽象类不能实例化
4、抽象类可以有构造方法
5、抽象类的子类要么重写抽象类中的所有抽象方法要么是抽象类

抽象类和抽象方法的定义格式

1,抽象类的定义格式
public abstract class 类名 { }
2,抽象方法的定义格式
public abstract void 方法名();

关于抽象类的一个小案例

案例需求
定义猫类(Cat)和狗类(Dog)
猫类成员方法:eat(猫吃鱼)drink(喝水…)
狗类成员方法:eat(狗吃肉)drink(喝水…)
实现步骤

  1. 猫类和狗类中存在共性内容,应向上抽取出一个动物类(Animal)
  2. 父类Animal中,无法将 eat 方法具体实现描述清楚,所以定义为抽象方法
  3. 抽象方法需要存活在抽象类中,将Animal定义为抽象类
  4. 让 Cat 和 Dog 分别继承 Animal,重写eat方法
  5. 测试类中创建 Cat 和 Dog 对象,调用方法测试

Animal类具体实现

public abstract class Animal{
	public void drink(){
		System.out.println("drink water...");
	}
	//注意抽象方法只能存在与抽象类中。
	public abstract void eat();
}

Dog类具体实现

public class Dog extends Animal{
	//子类需要重写父类中的每一个抽象方法。
	public void eat(){
		System.out.println("狗吃肉。");
	}
}

Cat类具体实现

public class Cat extends Animal{
	public void eat(){
		System.out.println("猫吃鱼");
	}
}

测试类测试一下

public class Test{
	public static void main(String[] args){
		//创建一个新的狗类对象
		Dog d = new Dog();
		d.dirnk();
		d.eat();

		Cat c = new Cat();
		c.dirnk();
		c.eat();
		
	}
}

模板设计模式

设计模式

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

模板设计模式

把抽象类整体就可以看做成一个模板,模板中不能决定的东西定义成抽象方法 让使用模板的类(继承抽象类 的类)去重写抽象方法实现需求。

模板设计模式的优势

模板已经定义了通用结构,使用者只需要关心自己需要实现的功能即可。

关于模板设计模式的一个小例子

//一个作文模板类,规定了作文的题目和结尾,要写作文的同学只需要改写中间部分就可以了,即重写body方法就可以了。

public abstract class CompositionTemplate { 
	public final void write(){ 
		System.out.println("<<雪中悍刀行>>"); 
		body(); 
		System.out.println("我曾雪中悍刀行"); 
	}
	public abstract void body(); 
}

//比如徐凤年要写作文

public class XuFengNian extends CompositionTemplate{
	public void body(){
		System.out.println("我曾敦煌骑龙袍!"); 
	}
}

//最后测试一下

public class Test { 
	public static void main(String[] args) { 
		XuFengNian t = new XuFengNian(); 
		t.write();
	} 
}

Final关键字的应用

fianl关键字的作用

final代表最终的意思,可以修饰成员方法,成员变量,类

final修饰类、方法、变量的效果

1、fianl修饰类:该类不能被继承(不能有子类,但是可以有父类)
2、final修饰方法:该方法不能被重写
3、final修饰变量:表明该变量是一个常量,不能再次赋值
注 变量是基本类型,不能改变的是值
变量是引用类型,不能改变的是地址值,但地址里面的内容是可以改变的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值