Java学习笔记(八)abstract,final,变量及接口

java面试经历之笔试题 面试java开发岗位收到面试邀请,一般都会有笔试题。以下是本人面试的一些笔试题目记录一下 2月26日面试题················································· 一、Java 1.以下不属于面向对象特征的基本特点的是( B) A封装性 B模块性 C多态性 D继承性 2.在java中,表示换行符的转义字符是(A) A /n B ... 阅读详情

1. abstract关键字

抽象类和抽象方法都以关键字abstract修饰.java中,抽象方法没有方法体,以一紧跟在声明之后的";"结束。

abstract class Figure {// 抽象类,一般作为其他类的超类
	protected double x;

	Figure() {

	}

	Figure(double x1) {
		this.x = x1;
	}

	abstract public double area(); // 抽象方法

	@Override
	public String toString() {
		return "x=" + x;
	}
}

class Circle extends Figure {
	public Circle(double x1) {
		super(x1);
	}

	public double area() {// 具体方法
		return 3.1415926 * x * x;
	}

	public String toString() {// 方法覆盖
		return "圆:\t" + super.toString() + "\tarea:" + this.area();
	}
}

class Rectangle extends Figure {
	double y;

	public Rectangle() {

	}

	public Rectangle(double a, double b) {
		super(a);
		this.y = b;
	}

	public double area() {// 具体方法
		return x * y;
	}

	public String toString() {// 方法覆盖
		return "长方形:\t" + super.toString() + "\ty=" + this.y + "\tarea:"
				+ this.area();
	}
}

public class testFigure {
	public static void main(String[] args) {
		Rectangle r = new Rectangle(10.0, 20.0);
		Circle c = new Circle(10.0);
		Figure f = new Rectangle(30.0, 30.0);//自动类型转换
		System.out.println(r.toString());
		System.out.println(c.toString());
		System.out.println(f.toString());
	}
}

运行结果:

长方形:	x=10.0	y=20.0	area:200.0
圆:	x=10.0	area:314.15926
长方形:	x=30.0	y=30.0	area:900.0

注意:

(1)如果一个类继承自某个抽象类,而没有实现抽向父类中的抽象方法,则该类必须定义为抽象类。

(2)抽象类不能被实例化。

(3)抽象类的作用是提供一个恰当的父类(一般作为其他类的超类,与final正好相反)

(4)如果一个类里有抽象方法,则这个类就必须声明成抽象的

(5)抽象类中可以没有抽象方法

//如果一个类里有抽象的方法,则这个类就必须声明成抽象的
abstract class Vehicle{
	//该类的没有给出方法体,声明为抽象方法,继承它的类中则需要定义该抽象方法体
	public abstract void calcFuelEffiency();//抽象方法
	
	public abstract void calcTripDistance();//抽象方法
}

abstract class Truck extends Vehicle{
	//一个类中包含有成员方法未实现的话,这个类必须声明为抽象类
	public Truck(double max_load){
		
	}
	
	public void calcFuelEffiency(){
		
	}
	
	/*
	public void calcTripDistance(){
	
	}
	 */
}

class RiverVarge extends Vehicle{
	
	//类实现了定义的方法,则类不需要定义为抽象类
	public RiverVarge(double max_load){
		
	}
	
	public void calcFuelEffiency(){
		
	}
	
	public void calcTripDistance(){
		
	}
}
public abstract class testAbstract {
	//抽象类中可以没有抽象方法
	public static void main(String[] args) {
		
	}
}<span style="color:#ff0000;">
</span>
2. final关键字

(1)如果一个类没有必要再派生子类,通常可以用final关键字修饰,表明它是一个最终类。

(2)最终方法:用关键字final修饰的方法,既不能被覆盖,也不能被重载,它是一个最终的方法,其方法的定义永远不能改变。

注意:

(1)final类中的方法可以不声明为final方法,但实际上final类中的方法都是隐式的final方法。

(2)final修饰的方法不一定要存在于final类中。

(3)如果一个变量用final修饰,表明它在程序中是不能被修改的常量。

(4)final常量可以在声明的同时赋初值,也可以在构造函数中赋初值。

(5)为了节省内存,我们通常将常量声明为静态的(static)。

(6)定义类头时,abstract和final不能同时使用。

public class testFinal {
	public static void main(String[] args) {
		// <span style="color:#ff0000;">final修饰复合类型数据时,修饰的是引用地址不能改变,</span>
		//但是指向的堆中的实例具体的值,则是可以改变的,即<span style="color:#ff0000;">引用的成员变量是可以改变的</span>
		final Student p1 = new Student("Tom", "M", 23);
		Student p2 = new Student("Mary", "F", 20);
		System.out.println("final p1:" + p1.toString());

		// p1=p2 //对final对象重新赋值会产生编译错误
		// 以下对final对象中的变量赋值是可以的
		p1.name = p2.name;
		p1.sex = p2.sex;
		p1.age = p1.age;
		System.out.println("final p1:" + p1.toString());
	}
}

class Student {
	String name;
	String sex;
	int age;

	public Student(String n, String s, int a) {
		this.name = n;
		this.sex = s;
		this.age = a;
	}

	@Override
	public String toString() {
		return "Student [name=" + name + ", sex=" + sex + ", age=" + age + "]";
	}
}

3. 变量

(1)全局变量:全局变量的作用范围是整个类,即在该类的各个方法中可以直接使用。任何对全局变量值的改变,都可能对后续操作产生影响。

(2)局部变量:是指在一个方法或一个方法的程序块中声明的变量,也称为本地变量。局部变量的作用范围是声明该变量的方法或某一方法的程序块内不能在其他地方引用。

(3)全局变量(即成员变量)如果不初始化,则取默认值;局部变量(即本地变量)必须初始化,否则编译时将产生语法错误

(4)各种数据类型的默认值表

变量类型

byte

short

int

long

float

double

char

boolean

引用

默认值

0

0

0

0L

0.0f

0.0d

'\u0000'

false

null


4. 接口

(1)接口是一组方法集,接口中包含的方法都是抽象方法,定义的方法体的任务留给实现该接口的类去完成,接口是用来实现类间(不相关类)多重继承功能的结构。

(2)接口是一种特殊的“类”,而且是一种特殊的“抽象类”,一个类是可以实现多个接口。

(3)接口中所有的方法都默认是public abstract的,并且只有方法头和参数列表,没有方法体。

(4)接口中所有的变量都默认是public static final的。

(5)接口没有构造方法,接口可以继承,而且可以多重继承

(6)接口中的方法体可以由Java语言书写,也可以由其他语言书写,用其他语言书写时,接口方法需要用native关键字修饰

 

接口的功能:

(1)通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系

(2)通过接口可以指明多个类需要实现的方法

(3)通过接口可以了解对象的交互界面,而不需要了解对象所对应的类

(4)通过接口可以在运行时动态地定位类所调用的方法

 

定义接口

[public ][interface] 接口名称[extends 父接口名列表]{

//静态常量

[public][static][final]数据类型 变量名 = 值;

//抽象方法

[public][abstract][native]返回值 方法名(参数列表);

}

实现接口

[修饰符] class 类名[extends 父类名][implements 接口A,接口B]{

    类的成员变量和成员方法;

为接口A中的所有方法编写方法体,实现接口A;

为接口B中的所有方法编写方法体,实现接口B;

    …

}


interface Iexample{
	void method1();
	void method2();
}
abstract class Example1 implements Iexample{
	
	//因为只实现了一个方法,所以类Example1需要定义为抽象类
	public void method1(){
		…
}
}
interface A{
	char a = 'A';
	void showa();
}
interface B extends A{
	char b = 'B';
	void showb();
}
interface C{
	char c = 'C';
	void showc();
}
interface D extends B,C{//接口允许多继承
	char d = 'D';
	void showd();
}

class E implements D{
	char e = 'E';
	
	public void showa(){
		System.out.println("这里是接口" + a);
	}
	public void showb(){
		System.out.println("这里是接口"+b);
	}
	public void showc(){
		System.out.println("这里是接口"+c);
	}
	public void showd(){
		System.out.println("这里是接口"+d);
	}
	public void showe(){
		System.out.println("这里是类"+e);
	}
}
public class InterfaceTest1 {
	public static void main(String[] args) {
		E e = new E();
		e.showa();
		e.showb();
		e.showc();
		e.showd();
		e.showe();
	}
}

运行结果:

这里是接口A
这里是接口B
这里是接口C
这里是接口D
这里是类E

注意:

(1)一个类在实现某个接口的抽象方法时,必须以完全相同的方法头,否则,只是在重载一个新方法,而不是实现已有的抽象方法。

(2)接口的抽象方法的访问限制符默认为public,所以在实现这些抽象方法时,必须显式的使用public修饰符,否则将被警告为缩小了接口中定义的方法的访问控制范围。

 

5. 包

(1)包是类和接口的集合,通过关键字package创建,用包来管理名称空间,包消除了不同组的类中潜在的类名冲突问题。

(2)Java中的每一个类都属于一个特定的包,包是有层次的

(3)包定义语句必须是Java源文件中的第一条可执行语句

 

(4)Java常用类库

API包 功能

java.lang 包含Java语言的核心类库

java.util  提供各种实用工具类

java.io    标准输入/输出类

java.net   实现Java网络功能的类库

java.awt   包含了Java图像界面中常用的类和接口

java.applet   提供对通用Applet支持的类和接口

java.security 支持Java程序安全性的类和接口



Taro React组件使用(5) —— RuiPasswordInput 密码输入框显示隐藏和清空 初始化时,需要将传入的 value 赋值给当前组件的 value, 不能直接修改 props 的 value;在组件内输出组件内的变量时,最好先判断输出函数是否定义,再输出,否则很容易引起报错。 阅读详情

相关推荐

C++开发基础之掌握常用的三种异步编程模型

以上是三种常见的C++异步编程模型,每种模型都有其适用的场景和特点。根据具体需求,你可以选择合适的模型来进行异步编程。

dotnet研习社 2175

(十)面向对象三大修饰符final、abstract、static

java三大修饰符final abstract static以及代码块初步认识

weixin_63133068的博客 399

Excel数据清洗实战:8个必学函数搞定90%的脏数据问题(附案例)

本文通过一个完整的销售数据清洗案例,详细讲解了如何组合使用TRIM、CLEAN、SUBSTITUTE等8个核心Excel函数,构建自动化清洗流水线,高效解决日常办公中90%的脏数据问题,从而将时间留给更有价值的分析工作。

weixin_29215391的博客 583

Java中abstract关键字详解

abstract只能修饰类(class) 和 方法。而不能修饰成员变量。这是由于抽象的概念确定的。只有类和方法可以抽象出来,而成员变量不需要抽象。 abstract修饰类 abstract之所以出现,是因为面向对象的思想所趋。在面向对象的思想中,不同的类之间可能具有高度相似的成员变量以及个别的方法。那么为了避免重复代码。我们需要将各个类之间高度统一的成员变量和方法抽象出来封装为一个抽象父...

weixin_30872157的博客 453

使用ITK-SNAP软件进行医学图像的标注(label标签设置、调整等)(windows版本,如mac和linux操作则略有不同)

使用ITK-SNAP软件进行医学图像的标注工作:如肿瘤、炎症、出血、梗死等的多类 目标轮廓勾画等。

qianshuqinghan的博客 2万+

Proteus 8.9仿真五路抢答器:从74LS148编码到NE555报警的保姆级电路拆解

本文详细解析了使用Proteus 8.9仿真五路抢答器的完整设计流程,从74LS148优先编码器到NE555定时报警电路。通过保姆级的电路拆解和芯片选型指南,帮助读者掌握数字电路中的编码、锁存、译码和定时等核心技术,实现稳定可靠的抢答系统仿真。

weixin_30836759的博客 380

Java中abstract的基本使用与详解

先来看一道题: 下列哪一种叙述是正确的 A:abstract修饰符可修饰字段、方法和类 B:抽象方法的body部分必须用一对大括号{ }包住 C:声明抽象方法,大括号可有可无 D:声明抽象方法不可写出大括号 解析:D java中规定:abstract只能修饰类和方法,不能修饰变量。 1、什么是抽象类? 类和类之间如果具有相同的特征,将这些共同的特征提取出来,形成的就是抽象类。 类本身是不存在的,所以抽象类无法实例化对象。 类到对象是实例化,对象到类是抽象。 public class Test { p

weixin_42072632的博客 2万+

Ceph入门到精通-存储桶通知

这 通知还可以根据前缀的匹配项过滤掉事件,并且 (1) 键的后缀,(2) 附加到对象的元数据属性, 或 (3) 对象标签。在此模式下,操作仅在以下之后确认(确认) 通知将发送到主题的已配置终端节点。这意味着 通知的往返时间(发送 通知主题的终端节点以及接收 确认)被添加到操作本身的延迟中。要更新主题,请使用用于创建主题的相同命令(但在 更新时,使用现有主题的名称和不同的终端节点值)。端口:对于未加密的连接,默认为 5672,对于未加密的连接,默认为 5671 SSL 加密连接。(默认情况下,这是“假的”。

隔壁老瓦的专栏 1131

java abstract 变量_Java中类、方法和变量修饰符关键字

1、abstract声明抽象abstract关键字可以修改类或方法。abstract类可以扩展(增加子类),但不能直接实例化。abstract方法不在声明它的类中实现,但必须在某个子类中重写。采用abstract方法的类本来就是抽象类,并且必须声明为abstract。2、class类class关键字用来声明新的Java类,该类是相关变量和/或方法的集合。类是面向对象的程序设计方法的基本构造单位。类...

weixin_31227315的博客 585

Playwright实战:打造绕过全维度前端反爬的无头浏览器爬虫(2026实战版)

Playwright绕过前端反爬的核心是模拟真实:真实的设备指纹、真实的行为轨迹、真实的网络请求;2025年前端反爬的核心检测维度是设备指纹+行为轨迹+网络请求,三者缺一不可;实战中需重点关注WebGL/Canvas指纹模拟、行为随机性、请求头完整性,这是绕过反爬的关键;性能优化需以“不触发反爬”为前提,优先选择浏览器复用、资源拦截,而非无限制并发。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2094

Python爬取公交线路信息及站点shp数据 文末附数据下载地址

三、现在已经获取到了各个线路名称、链接,以及所途径的上下行站点,那么接下来就应该对开始对第三页url进行信息采集,即本次爬虫的最终目的:爬取所有站点的GPS坐标数据。但坑就坑在,二环一号线属于环线,所以只有左侧有站点数据,而其他非环线车次的站点数据分有上下行,如果用正则匹配,则分不清楚到底哪些是上行站点哪些是下行站点。以前爬过百度地图,当时用的是API平台,加上网站比较规范,所以标签节点什么的都比较清晰,但这次由于特殊原因所选择的网站为公交网,废话不多说直接开始吧。checi=二环一号线。

J_Giser的博客 1316

Java——static修饰符、final修饰符、abstract修饰符、接口

一、static修饰符 static修饰符可以修饰变量、方法或代码块 用static修饰的变量叫静态变量。 静态变量有如下注意事项: 类中的静态变量属于类,而不属于某个特定的对象。类的静态成员可以与类的名称一起使用,而无须创建类的对象。(可以直接通过类名来访问静态变量,建议使用类名来调用静态变量)静态变量或方法也称为类的变量或方法。不管创建了类的多少实例,整个类中静态变量的副本只有

liumei90 8160

路径规划 | 图解粒子群(PSO)算法(附ROS C++仿真)

粒子群算法(PSO)的基本思想是模拟鸟群觅食机制,将鸟类的觅食方向分为自我认知部分和社会部分,个体自主探索群体周围空间的同时,也随着群体的主流方向前进,不断逼近最优目标。本文详解PSO算法基本概念,并给出ROS C++实现加深理解

FRIGIDWINTER的博客 2616

java学习笔记之static,final,abstract修饰符和接口

先看看三天在能不能发

Q_X_X的博客 1150

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java中的static、final、abstract含义及使用方法

一、static、final、abstract三者的使用场景与注意事项 static关键字可用于修饰成员变量和成员函数,想要实现对象中的共性数据的对象共享,可以将这个数据进行静态修饰,被静态修饰的成员可以直接被类名调用,静态随着类的加载而加载,而且优先于对象存在。静态方法只能访问静态成员(静态方法和静态变量),不可以访问非静态成员,这是因为静态方法加载时,优先于对象存在,所以没有办法访问...

小宇飞刀的BLOG 3607

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java修饰符abstract、static、final的区别

在 Java 编程中,修饰符是一种用于修改类、方法和变量行为的关键字。其中,abstract、static 和 final 是三个常用的修饰符,它们具有不同的作用和特点。理解这些修饰符的含义和使用方式,对于掌握 Java 基础编程至关重要。抽象的,不是真实存在的抽象(abstract)方法代表了某种标准,定义标准,定义功能,在子类中去实现功能(子类继承了父类并需要给出从父类继承的抽象方法的实现)。方法一时间想不到怎么被实现,或有意要子类去实现而定义某种标准,这个方法可以被定义为抽象。

苏叶的专栏 1099

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

final和abstract

【Java】浅析final,abstract修饰符 博客分类: Java finalabstract 有时候,你不希望别人坐享其成,通过继承你写的类得到他自己所需要的类,怎么办呢?这个时候你就可以在你的class之前加上final这个修饰府,例如public final class test{……},加上了这个修饰符之后,别人在继承这个类的话就会编译出错,提示他这个类不能

知识在于积累 4208

JAVA常见的关键字 final、this、super、static、abstract

1.Final关键字 2.This关键字 3.Super关键字 3.1 基本用法 3.1.1访问父类的成员变量 3.1.2调用父类的方法 3.1.3 调用父类的构造函数 3.2super关键字的深层理解 3.3 注意事项 4.Static关键字 4.1 作用范围 4.2 使用 4.2.1 修饰类的成员变量 4.2.2修饰类的成员方法 4.2.3 修饰代码块 4.2.4 修饰内部类 4.2.5 注意事项 5.abstract关键字 5.1 为什么要用? 5.2

2301_77358195的博客 983

论Java中,修饰符中static、final以及abstract的使用。

论Java中,修饰符中static、final以及abstract的使用。

chengxinzhongnuo的博客 1469

static,final和abstract

<br /><br />一、static<br />  修饰属性,方法,代码块<br />1、静态属性:全类公有,称为类变量<br />             那么这个属性就可以用  类名.属性名  来访问<br />             (共有的类变量与对象无关,只和类有关)<br />   类加载:虚拟机通过I/O流把一个类的信息从字节码文件中读入虚拟机并保存起来  <br />           一个类只会加载一次<br />   类变量,会在加载时自动初始化,初始化规则和实例变量相同。<br

为梦奋斗 6004

Java特征修饰符(final、static、abstract)+接口

Java特征修饰符 一、Java特征符概述 Java特征修饰符有以下7种 修饰符 说明 final 最终的,不可改变的 static 静态的 abstract 抽象的 native 本地的,看到native就是java代码的尽头 transient 瞬时的,短暂的——》序列化 synchronized 同步的,线程相关的知识 volatile 保护属性或方法的线程关系 ...

FGJtalent考研人 581

java——final关键字;abstract抽象类;implement接口

final使用注意事项和细节讨论;抽象类使用注意事项和细节讨论,抽象类最佳实践-模板设计模式;接口使用注意事项和细节讨论;实现接口VS继承类;接口的多态特性

Good_Starry的博客 903

java三大修饰符abstract,static,final

java三大修饰符 java三大修饰符,即抽象(abstract)、静态(static)和最终的,不可变(final) 一、抽象、抽象类 抽象: java中用abstract关键字来修饰抽象事物,从字面上可以理解为抽象既是朦胧,似是而非,像又却不是;具备某种对象特征,但又不完整。用abstract修饰的类称为:抽象类,同样被abstract修饰的方法称为:抽象方法。 那到底什么是抽象类呢?例如在我们生活中可以把动物当成是一个抽象类,动物可以有很多种,但是具体是什么样的我们并不知道,如我们在街上看到一只狗

小飞侠的博客 2405

Java的非访问控制符:static,final,abstract

非访问控制符 非访问控制符 基本含义 修饰类 修饰成员 修饰局部变量 static 静态的、非实例的(本质)、类的 可以修饰内部类 Yes final 最终的、不可改变的 Yes Yes Yes abstract 抽像的,不可实例的 Yes(修饰抽象的方法) Yes 控制符:staticstatic字段 静态字段最本质

七印miss的博客 3044

Java中abstract、static、final的区别

1、在Java中,abstract、static和final都是关键字,用作修饰符 2、abstract:可以用来修饰类和方法,不能用于修饰变量。 (1)当一个方法被abstract修饰后就变成抽象方法,该方法所在的类也必须变成由abstract修饰的抽象类。 (2)一旦一个类变成了抽象类,那么这个类就具有继承关系。继承抽象父类的子类必须重写父类中的所有的抽象方法或子类也变成抽象类(可以不用重写父类的抽象方法)。 (3)抽象方法没有方法体----即抽象方法只有方法的声明,没有方法的具体实现。 (4

Mr_W_James的博客 1129

abstract类中可以有private的成员_【Java基础】final、abstract、this关键字

木 头 课 堂小 木 正 文——————————————❶final关键字—————————————— 1、final 修饰的类,不能再被继承。 1) Java的String就是final类,不能被继承! (面试题可能考到)。2) Math是final类,不能被继承!3) Integer、Long、Character等 包装类是...

weixin_34795892的博客 3229
上一篇: Java学习笔记(七)Java的封装继承和多态
下一篇: Java学习笔记(九)Java常用包中的类之Object、Math及数据类型类
mengrennwpu
博客等级 码龄15年 262粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

mengrennwpu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值