Java基础学习菜鸟入门第十九天——Java面向对象(十三)

java面向对象——抽象类、final类

5.3抽象类

5.3.1抽象类产生过程
  • 抽象类的产生过程:一致不断的向上抽象,越抽象的内容越不容易理解,越难具象化表现。抽象类本质还是一个类。类中存在的内容差不多都存在。

abstract类.PNG

5.3.2抽象类的定义
  • 当多个类中出现相同的功能,但是功能主体不一样,这时候可以进行向上抽取,只抽取功能定义,而不抽取功能主体,并将这些功能定义封装进一个类,并且将这些功能使用abstract声明修饰,并且没有方法体(没有花括号),那么这类就成了一个抽象类
5.3.3抽象类中定义格式
修饰符 abstract  类  类名{
    
}
public abstract class Animal{
    
}
5.3.4抽象类中定义的内容详解
  • 抽象类中可以定义和类中完全一样的内容(属性、方法、构造器)。
  • 抽象类中的方法可以是抽象方法,也可以是非抽象方法。
  • 抽象类就是通过abstract修饰的类。它的目的是用来被继承的。
  • 被abstract修饰的方法称之为抽象方法,抽象方法只有方法的声明没有方法体以及大括号。
5.3.5抽象方法的格式
修饰符 abstract [void|返回值类型] 方法名称(参数列表);
public abstract int method(int number);
  • 抽象方法目前只能定义在抽象类中,抽象方法一定是在抽象类中吗?(不一定的,接口中也可以定义抽象方法。)
  • 抽象类中的抽象方法就是用来被重写的。
  • 抽象中的类不能被创建对象,因为抽象类不能被实例化
  • 抽象类中的构造器就是用来被子类调用的,而不是用来产生对象的,因为抽象类无法被实例化。
  • 子类如果只重写一部分的抽象方法,那么子类还是抽象类
  • 抽象类一般情况下我们是用来看懂别人的源码的,继承关系只有一次。
  • 当一个类继承了抽象类之后,需要重写抽象类中的所有抽象方法。而且需要查看整个继承链中是否存在其他抽象方法,如果有也必须要全部重写

代码演示:

//导包导入jdk中的包
import java.util.AbstractList;
public class Test01{
	public static void main(String[] args){
       Animal an=new Dog();
		an.run();
    }
}
 abstract class Animal extends AbstractList{
	int age;
	public Animal(){
        System.out.println("我是animal");
	}
	public abstract void run();
}
 class Dog extends Animal{
	public void run(){
        System.out.println("单脚大跳");
	}
     //重写AbstractList中的方法
	@Override
	public Object get(int index){
		return null;
    //重写AbstractList中的方法    
	}
	@Override
	public int size(){
		return 0;
	}
} 
执行结果:
我是animal
单脚大跳

5.4final类

作用:final是java中的关键字,可以用来修饰类,方法,变量(成员变量、局部变量)

  • final修饰的类不可以被其他类继承

  • final修饰的方法不可以被重写

  • final修饰的变量叫常量,不允许再次赋值,

    • 在对变量进行final修饰时,一定要赋值,否则未初始化,

    • 书写规范:所有字母都必须大写并且单词之间用_连接

      例如:final NAN_MA_GE;

代码演示:

class F{
	public boolean study(){
		System.out.println("勤奋、努力");
		return true;
	}
	public final boolean isMan(){
		if(study()&&marry()){
			return true;
		}
		return false;
		}
	public boolean marry(){
		System.out.println("结婚生子");
		return  true;
	}
}
class S extends F{
	public boolean study(){
		System.out.println("玩着学好。。。");
		return true;
	}
	public boolean marry(){
		System.out.println("结婚");
		return true;
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QZP51ZX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值