Java 抽象类与final用法
时间:2022-05-04
本文章向大家介绍Java 抽象类与final用法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
抽象类:
基于继承
抽象类和抽象方法的定义 父类的意义: 把子类共有的属性,抽取出来,达到代码的重用
抽象类不可被实例化 使用抽象类,限制实例化(只有派生类能实例化,父类不能实例化) 关键字:abstract 每个子类的实现不同
abstract也可用于方法---抽象方法 抽象方法没有方法体 抽象方法必须在抽象类里 抽象方法必须在子类中被实现,除非子类是抽象类(可以不实现) (抽象类没有方法体)
抽象方法的使用: 1)父类没有必要实例化,采用将父类定义成抽象类型 2)抽象类中的方法未必都是抽象方法 抽象方法必须在抽象类中 3)父类中定义方法,必须由子类实现,每个子类实现的内容不同,采用父类定义抽象方法 4)抽象类不可以被实例化 5)抽象方法必须由子类全部实现 6)抽象方法必须在抽象类中 子类重写抽象方法: 必须与父类抽象方法 名字相同 返回值相同 参数相同 访问权限相同
栗子:
package cn.jbit.epet.inherit2;
/**
*
* @author: 房上的猫
*
* @time: 下午3:51:59
*
* 博客地址: https://www.cnblogs.com/lsy131479/
*
*/
public class Pet {
private String name = "无名氏";// 昵称
private int health = 100;// 健康值
private int love = 0;// 亲密度
/**
* 无参构造方法。
*/
public Pet() {
this.health = 95;
System.out.println("执行宠物的无参构造方法。");
}
/**
* 有参构造方法。
* @param name 昵称
*/
public Pet(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int getHealth() {
return health;
}
public int getLove() {
return love;
}
/**
* 输出宠物信息。
*/
public void print() {
System.out.println("宠物的自白:n我的名字叫" +
this.name + ",我的健康值是" + this.health
+ ",我和主人的亲密程度是" + this.love + "。");
}
}
package cn.jbit.epet.inherit2;
/**
*
* @author: 房上的猫
*
* @time: 下午3:51:59
*
* 博客地址: https://www.cnblogs.com/lsy131479/
*
*/
/*
*狗狗类,宠物的子类。
*/
public class Dog extends Pet {
private String strain;// 品种
/**
* 有参构造方法。
* @param name 昵称
* @param strain 品种
*/
public Dog(String name, String strain) {
super(name); //此处不能使用this.name=name;
this.strain = strain;
}
public void setStrain(String strain) {
this.strain = strain;
}
public String getStrain() {
return strain;
}
public void print(){
super.print();
System.out.println("我是一只"+this.getStrain()+"犬。");
}
}
package cn.jbit.epet.inherit2;
/**
*
* @author: 房上的猫
*
* @time: 下午3:51:59
*
* 博客地址: https://www.cnblogs.com/lsy131479/
*
*/
public class Penguin extends Pet {
private String sex;// 性别
/**
* 有参构造方法。
* @param name 昵称
* @param sex 性别
*/
public Penguin(String name, String sex) {
super(name);
this.sex = sex;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public void print(){
super.print();
System.out.println("我的性别是"+this.getSex()+"。");
}
}
package cn.jbit.epet.inherit2;
/**
*
* @author: 房上的猫
*
* @time: 下午3:51:59
*
* 博客地址: https://www.cnblogs.com/lsy131479/
*
*/
/*
* 测试类,测试类的继承。
*/
public class Test {
public static void main(String[] args) {
// 1、创建宠物对象pet并输出信息
Pet pet = new Pet("贝贝");
//pet.print();
// 2、创建狗狗对象dog并输出信息
Dog dog = new Dog("欧欧", "雪娜瑞");
dog.print();
// 3、创建企鹅对象pgn并输出信息
Penguin pgn = new Penguin("楠楠", "Q妹");
pgn.print();
}
}
final用法:
final修饰属性,方法和类
可以修饰类:最终版的类 不希望再被其他类继承
public finla class text{}
可以修饰方法: 方法不希望被重写
public class text{
public final void text1(){}
}
可以修饰变量:(常量)最终版的属性值 属性不希望被修改
public class text{
public final int a;
}
总结: 抽象类和抽象方法: 抽象类不能被实例化‘ 可以有0~多个抽象方法 非抽象类必须重写父类的所有抽象方法 final修饰符: 修饰的类,不能被继承 修饰的方法,不能被子类重写 修饰的变量将编程常量,只能在初始化时进行赋值
(C) 房上的猫 。 保留所有权利。 https://www.cnblogs.com/lsy131479/
如需转载,请注明出处!!!
- SDP(10):文本式大数据运算环境-MongoDB-Engine功能设计
- Kaggle Titanic 生存预测比赛超完整笔记(下)
- SDP(9):MongoDB-Scala - data access and modeling
- 数据清理的遗留问题处理(r6笔记第87天)
- 一次DB time抖动发现的expdp的bug(r6笔记第86天)
- Python中map函数
- 10g,11g中数据库静默安装中的细小差别(r6笔记第85天)
- SDP(8):文本式数据库-MongoDB-Scala基本操作
- SDP(7):Cassandra- Cassandra-Engine:Streaming
- TensorFlow实现神经网络入门篇
- 27.反射,类加载器,设计模式,jdk新特性
- SDP(6):分布式数据库运算环境- Cassandra-Engine
- 配置dg broker的问题分析及修复(r6笔记第84天)
- SDP(5):ScalikeJDBC- JDBC-Engine:Streaming
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- linux系统报xfs_vm_releasepage警告问题的处理方法
- linux系统报tcp_mark_head_lost错误的处理方法
- Pandas的列表值处理技巧,避免过多循环加快处理速度
- 详解Linux iptables常用防火墙规则
- Linux文件权限与群组修改命令详解
- Spring-IOC-从单例缓存中获取单例 Bean
- Linux上为你的任务创建一个自定义的系统托盘指示器
- 14个Seaborn数据可视化图
- Linux中的进程守护supervisor安装配置及使用
- 《JavaScript数据结构与算法》读书笔记
- 《JavaScript函数式编程指南》读书笔记
- 冒泡排序
- 详解linux下避免僵尸进程的几种方法
- Ubuntu下Subversion(SVN)的快速安装与配置详解
- Linux查看某个端口的连接数的方法