final用于声明属性,方法和类,可以修饰类,修饰字段,修饰方法,修饰局部变量,修饰形参
属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期不能修改,
修饰修饰类,最终类,不能被继承,不能被定义为抽象类或者接口
修饰字段,必须显示初始化,不能被修改,一般final与static同时修饰某个字段,所有字母都大写,表示final常量
修饰方法:bueng子类不能被覆盖 能被子类继承
修饰局部变量, 一旦初始化就不能再修改, 注意final修饰引用类型变量, 是指这个引用类型变量不能再指向其他对象,可以修饰它的属性值
修饰方法形参, 在方法体中不能修改final形参的值
final属性赋值:
–在声明时同时赋值,往往与static一起使用
final static int Num = 10;
package com.nie.day5.demo06;
public class Filal {
//用于声明方法和类
//final修饰常量,常量值不能变,利用static 修饰 节省空间
final static int Num = 10;
final int a = 100;
public final void eat() {
System.out.println("你好");
}
//定义就必须直接赋值或者在构造方法中进行中进行赋值,后期不能修改
public void num(int a) {
// this.a=1000;
System.out.println(a);
}
//在方法参数前加final关键字,防止数据在方法题中被修改.
public void num1(final int b) {
// b=11;
}
}
如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类
抽象类除了不能实例化对象之外,类的其他功能依然存在,名成变量,成员方法和构造方法的访问方式和普通类一样.
当一个类的某个操作无法具体实现时,这个操作可以定义为抽象方法,使用abstract修饰方法, 只有方法的声明, 没有方法体
注意:
抽象类中不一定含有抽象方法
抽象类可以有成员属性和非抽象方法
抽象类不能被实例化,但可以有构造函数.因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象
抽象类不能创建对象:抽象类只能做基类,表示一种继承关系.
构造方法和静态方法不可以用abstract,
abstract与final不共存
[访问权限] abstract class 类名 {
成员列表
}
public abstract class Shapes {
public abstract void draw();
}
public abstract class Shapes {
public void draw(){
//具体代码
}
}
然后我们定义个抽象类
抽象类无法被直接实例化,我们可以让子类继承然后实例化子类
然后我们实例化子类
Java中只支单继承,如果向定义一些功能,想让一个子类都能继承实现,提供接口,这样我们就可以用一个子类去实现多个接口.**.可以理解为接口时特殊的抽象类.**这种抽象类中只包含常量和方法的定义,没有变量和方法的实现.
接口设计时候:关系实现类有何做哟个,不关心内部细节,面向接口的约定而不考虑接口的具体实现.
public interface Animal1 {
//所有属性默认为: public static final
void eat1();
//所有方法都是:public abstract
void foo();
}
定义接口: interface
[访问修饰符] interface 接口名称 [extends 其他的接口名1,….其他的接口名n] {
// 声明常量
// 抽象方法
}
接口使用 :implements
[访问修饰符] class 类名 implements 接口名1,接口名2……{
}
结合继承:
[访问修饰符] class 类名 extends 父类名 implements 接口名1,接口名2……{
}
接口的特性:接口不能被实例化,实现类必须重写接口的所有方法,实现类可以实现多个接口,接口中的变量都是静态.
接口一
/**
* 本质上说接口就是一个抽象类,
* 抽象类中只包含常量和方法的定义,
* 没有变量和方法的实现
*/
public interface animal extends Animal1 {
//所有属性默认为 public static final
// public static final int age=10;
//变量必须赋值
int age = 10;
//默认的为public abstract
//抽象方法访问时必须进行重写
void eat();
public abstract void test();
//jdk8后接口可以使用默认方法,和静态方法
//比抽象方法更加灵活,根据功能方法进行选择
public default void test1() {
//被子类重写
System.out.println("默认方法");
}
public static void test2() {
//通过类名访问4
System.out.println("静态方法");
}
}
接口二
public interface Animal1 {
//所有属性默认为: public static final
void eat1();
//所有方法都是:public abstract
void foo();
}
接口三
public interface Animal2 {
void test3();
}
类
//定义为抽象类 或者
//重写抽象方法
/**
* 一个类可以实现多个接口,
* <p>
* 一个类可以实现继承一个类
* 但是可以实现多个接口
*/
public class Dog implements animal, Animal1, Animal2 {
//抽象方法访问时必须进行重写
@Override
public void eat() {
System.out.println("抽象方法\t吃");
}
@Override
public void test() {
System.out.println("抽象方法测试");
}
@Override
public void eat1() {
}
@Override
public void foo() {
}
@Override
public void test3() {
}
}
测试
public class Test {
public static void main(String[] args) {
Dog dog =new Dog();
dog.eat();
dog.test();
dog.test1();//默认方法//
animal.test2();//静态方法
}
}
区别
不同点:
意义不同
定义方式不同
内容不同
抽象类中除了抽象方法外,还可以定义构造方法等普通类中定义的所有成员
接口除了抽象方法等这四个内容外, 不能定义构造方法等内容
public abstract修饰, 接口中还可以定义public static final常量 , public static 方法, public default方法
使用方式不同
类只支持单继承, 接口支持多继承
应用场景不同
相同点:
1)都可以定义抽象方法
2)都不能实例化对象,创建对象
3)定义的抽象方法都需要被重写
4)都可以定义public static方法, public static final常量
头文件:const char *strrchr(const char *str, int character);char *strrchr(char *str, int character);作用:返回一个指针,它指向字符character在字符串str中最后出现的位置。结尾处的null字符被认为是字符串的一部分。因此,指针也可返回字符串结尾的null字符。参数
关于数据泵impdp导入的部分参数的使用验证,本章验证的参数包括remap_data、remap_datafile、remap_schema、remap_table、remap_tablespace、reuse_dataf...
@SuppressWarnings注解用法详解一、注释类型:当你的编码可能存在警告时,比如安全警告,可以用它来消除。API中是这样描述的:指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。注意,在给定元素中取消显示的警告集是所有包含元素中取消显示的警告的超集。例如,如果注释一个类来取消显示某个警告,同时注释一个方法来取消显示另一个警告,那么将在此方法...
找完工作已经半个来月了,总觉得应该留下点儿什么记载,来纪念一下人生中的第一次求职。大家都说女生求职不容易,但我作为一个学电子信息科学与技术专业的硕士,用不到半个月的时间拿下七八个offer,总体感觉比较满意,希望找工作的女性同胞更加自信一点,肯定可以找到好的工作;男同胞们就更加不用说了,性别正确,努力一点能拿到更好的offer.
场景1: 将本地内容推送给远程库1.创建版本库git init 将此目录转换为git可管理的仓库git config --global user.name "xx" 或 git config --global user.email "xx"(都配也行)配置你的用户名或者密码,git每次提交都会带上这些信息git add . 文件添加到暂存区(stage)git commit...
记住,太阳每天都是新的,不要辜负了美好的晨光。引导语:有时候人就是这样,遇到再大的事自己扛忍忍就过去了,听到身旁的人一句安慰就瞬间完败。后来才明白,怕的不是冷漠怕的是突然的温柔,怕的不是自己吃苦怕的是身边的人为你难过,怕的不是孤独怕的是辜负。有一种落差是,你配不上自己的野心,也辜负了所受的苦难。 相貌是一个女人的外衣,时间久了总会褪色;个性是一个女人的骨头,历经岁月分外清晰。美女那么多,...
微信小游戏如何快速开通流量主,以及如何在游戏中接入广告进行盈利。
kali liunx安装微信,QQ等windows软件1、开启kali的i386支持[email protected]:~# dpkg --add-architecture i386更新一下软件库和软件[email protected]:~# apt update && apt upgrade2、安装wine并设置默认wine32因为kali默认安装wine64 ,先使用[email protected]:~# apt install wine32安装wine32并在ROOT目录下找到 .bashrc打开并添加以
Pleasant sheep and big big wolfTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3316Accepted Submission(s): 1360Problem Description...
昨天客户向我提到,微信支付在IOS上成功,但在Android上会报system:access_denied错误。反复检查代码,没有问题。而且因为IOS上成功支付,让我百思不得其解,为什么Android上不成功。后来看到一篇文章http://www.okhjp.com/post/9/wechat-pay-system-access-denied/,反应的问题和我一样,但是没有提到解决
本文作者:vxbomath今天我给大家分享高中数学必修四平面向量复习笔记知识点, 以帮助同学梳理知识。好了,高中数学必修四平面向量复习笔记知识点今天分享就到这里了,需要更多技巧视频可以私信老师每天给大家持续更新文章,大家多多关注。推荐阅读:高中数学平面向量解题技巧:奔驰定理推荐视频:高中数学辅导之高考数学向量难题快速口算的秘密...
前言图像分类是人工智能领域的一个热门话题。通俗解释就是,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个...