java接口的修饰符可以为static(java语言中,final修饰符的特点有哪些)

在本文中,我们将学习面向对象的其他知识点,包括关键字final,它修改的成员的值不能修改;关键字static,它修饰的成员属于类,可以被同类型的所有对象共享;权限修饰符,可以控制类成员的访问范围;在内部,方便把有一定逻辑关系的类组织在一起,也可以对外隐藏。
第一章:关键字final1.1-概述(理解)为什么要学习final关键字。学习了继承之后,我们知道子类可以在父类的基础上重写父类的内容,比如方法重写。那么我们可以随意继承API中提供的类并重写其内容吗?这显然是不合适的。为了避免这种任意重写,Java提供了final关键字来修改不可更改的内容。关键字final可以修改的内容不能更改。可用于修饰类、方法和变量。
类:不能被继承的修饰类。方法:修改过的方法不能被重写。变量:不能被重新分配的修改变量。1.2-final使用format(内存)来修改类格式如下:
final class name {}查询API发现我们学过的很多类,比如public final class String,public final class Math,public final class Scanner,都是用final修饰的,这样我们就可以使用它们,而不用改变它们的内容。装饰方法格式如下:
修饰符final返回值类型方法名(参数列表){//方法体}覆盖final修改的方法,编译时报错。修改变量局部变量:局部变量的基本类型在被final修改后只能赋值一次,不能再次更改。代码如下:
class final demo 1 { public static void main(string[]args){//声明变量并用final修饰final int a;//第一次赋值a=10//第二次赋值a=20//报告错误,不能重新赋值。//声明变量,直接赋值,用final修改final int b=10//第二次赋值b=20//报错,不能重新赋值}}局部变量:引用类型的局部变量,被final修饰后只能指向一个对象,地址不能改变。但是,它不影响对象内部成员变量值的修改。代码如下:
class final demo 2 { public static void main(string[]args){//创建一个用户对象final User u=new User();//创建另一个用户对象u=new User();//报错,指向新对象,地址值改变。//调用setName方法u.setName(‘张三’);//可以修改}}成员变量:成员变量涉及初始化。有两种初始化方法,只能选择一种:显示初始化和构造方法初始化。初始化:
Classuser {final string username=’张三’;私人年龄;}构造方法初始化:
公共类用户{最终字符串用户名;私人年龄;公共用户(字符串用户名,整数){ this。用户名=用户名;this.age=年龄;}}第二章:关键字static2.1-概述(知道)什么是静态关键字。static是静态修饰符,一般修改成员。由static修改的成员属于一个类,而不是该类的单个对象。静态修饰成员由多个对象共享。静态修饰成员属于类,但是它们会影响每个对象。用static修饰的成员也称为类成员,而不是对象的成员。静态关键字的特征
静态修改的东西属于类,而不是对象。存在于对象之前。用static修饰的成员可以作为共享数据(只要是根据用static修饰的成员的类创建的对象,就可以共享这个数据)。2.2-定义和使用(记忆)类变量的定义和使用当static修改一个成员变量时,该变量称为类变量。这个类的每个对象共享同一个类变量的值。任何对象都可以改变这个类变量的值,但是您也可以在不创建这个类的对象的情况下对它进行操作。格式:静态数据类型变量名;
静弦室;比如学生上学(比如清华),那么我们所有学生的学校都在清华,每个学生都一样,不分每个学生。所以,我们可以用下面的代码定义一个这样的静态变量school:
公共类学生{私有字符串名称;私人年龄;//Class变量,记录学生就读的学校,public静态字符串school=’清华大学’;public Student(String name,int age){ this . name=name;this.age=年龄;}//Print属性值public void show(){ system . out . println(‘ name=’ name ‘,age=’ age ‘,school=’ school);} } public class stude mo { public static void main(string[]args){ students 1=新生(‘张三’,23);学生s2=新生(‘李四’,24);学生s3=新生(‘王五’,25);学生s4=新生(‘刘钊’,26);S1 . show();//学生:姓名=张三,年龄=23,学校=清华大学S2 . show();//学生:姓名=李四,年龄=24,学校=清华大学S3 . show();//学生:姓名=王武,年龄=25,学校=清华大学S4 . show();//Student : name=刘钊,age=26,school=清华大学}}类方法(静态方法)的定义和使用。当static修改成员方法时,它被称为类方法。静态方法在声明中有Static,所以建议使用类名来调用它们,而不是创建该类的对象。调用方法很简单。用static关键字修饰的成员方法习惯上称为静态方法。定义格式:
修饰符静态返回值类型方法名(参数列表){//execute statement}在Student类中定义一个静态方法。
public static void showNum(){ system . out . println(‘ num : ‘ number of student);}备注:
静态方法可以直接访问类变量和静态方法。静态方法不能直接访问普通成员变量或成员方法。相反,成员方法可以直接访问类变量或静态方法。该关键字不能在静态方法中使用。静态成员的调用模式由static修改。成员可以并且建议由类名直接访问。虽然也可以通过对象名访问静态成员,但由于多个对象属于同一个类并共享同一个静态成员,因此不建议这样做,并且会出现一条警告消息。格式:
//访问类变量名。类变量名;//调用静态方法类名。静态方法名(参数)的示例:
classstudemo 2 { public static void main(string[]args){//访问类变量system . out . println(student . number of student);//调用静态方法student . shownum();}}2.3-静态示意图(理解)静态装饰:
与类的加载一起加载,并且只加载一次。存储在固定的内存区域(静态区域),所以可以通过类名直接调用。它先于对象存在,所以可以被所有对象共享。2.4-静态代码块(理解)静态代码块:在成员位置定义的,用static修饰的代码块{}。
位置:类中的方法外部。Execute:加载类时执行一次,优先执行方法。函数:当类被加载时,可以实现一些初始化操作。
公共类Person {私有字符串名称;私人年龄;//静态代码块static{ System.out.println(‘已执行的静态代码块’);} } } 2.5-静态导入(理解)静态导入就是java包的静态导入。使用import static静态导入包,这样就可以直接使用方法名来调用静态方法。格式
导入静态包名称;类名;方法名称;导入静态包名。类名。*;类a定义如下,包括两个静态方法3360。
包com . LPL 666;public class A { public static void print(String s){ system . out . println(s);} public static void print 2(String s){ system . out . println(s);}}静态导入一个类的静态方法,使用static和类名a .方法名,意思是导入类a中指定的方法.代码演示3360
导入静态com . LPL 666 . a . print;public class Demo { public static void main(String[]args){ print(‘ test String ‘);}}如果有多个静态方法,则使用static和类名A. *,这意味着导入类a中的所有静态方法.代码演示3360
导入静态com . LPL 666 . a . *;public class Demo { public static void main(String[]args){ print(‘ test String ‘);print 2(‘ test2 string ‘);}}第三章:权限修饰符3.1-概述(理解)Java中提供了四种访问权限。当用不同的访问权限修改器修改时,修改后的内容将具有不同的访问权限,
公:公。protected:protected default:default private:private 3.2-访问权限(内存)可见,public拥有最大权限。私人是最没有特权的。编写代码时,如果没有特殊考虑,建议使用这样的权限:
私有公有第四章:内部类4.1-概述(理解)在另一个类B中定义一个类A,称为内部类和外部类。在内部,方便把有一定逻辑关系的类组织在一起,也可以对外隐藏。
4.2-成员内部类(内存)成员内部类:在类中的方法之外定义的类。定义格式
class outer class { class inner class { } }例描述事物时,如果一个事物内部还有其他事物,可以使用inner class的结构。例如,汽车类Car包含引擎类Engine,在这种情况下,引擎可以由内部类描述,并在成员位置中定义。
Class {//外部类class Engine {//内部类}}访问功能
内部类可以直接访问外部类的成员,包括私有成员。为了让外部类访问内部类的成员,需要建立一个内部类的对象。创建内部类对象格式
格式:外部类名。内部类名对象名=新外部类型()。新的内部类型();例如:人的类和人的内心类和人心
公共类Person { private boolean live=true;Class Heart {public void jump() {//直接访问外部类成员if(live){ system . out . println(‘ Heart is beating ‘);} else {System.out.println(‘我的心不跳’);} } }公共布尔is live(){ return live;} public void set live(boolean live){ this . live=live;}}测试类:测试
类内部demo { public static void main(string[]args){//创建外部类对象Person p=new Person();//创建内部类对象Person。Heart Heart=p . new Heart();//调用内部类方法heart . jump();//调用外部类方法p . set live(false);//调用内部类方法heart . jump();}}/*输出结果3360心脏在跳动*/内部类还是独立类。编译后,内部类将被编译成独立的。类文件,但它前面是类名和外部类的$符号。例如,Person$Heart.class
4.3-匿名内部类(内存)匿名内部类是内部类的一种简化写法。它的本质是一个匿名的子类对象,有一个具体的父类或父接口。最常用的内部类是匿名内部类。以接口为例。当你使用一个界面时,你似乎必须做以下几个步骤。
在子类重写接口中定义方法,创建子类对象,调用重写的方法。我们的目的是最后调用方法,那么能不能简化一下,把上面四个步骤合并成一个步骤?匿名类是做到这一点的捷径。匿名类的定义和使用前提:必须有一个类或接口,这里的类可以是具体的,也可以是抽象的。
格式:new parent class name或interface name(){//方法overrides @ Override public void Method(){//execute statement } };代码:界面飞行
公共接口Fly { void Fly();}测试类
公共类测试{ public static void main(string[]args){/* 1。等号右边的3360是一个匿名的内部类,它定义并创建了接口的子类对象。2.3360等号左边是多态赋值,类型引用指向子类object */fly bird=new fly(){ @ override public void fly(){ system . out . println(‘小鸟飞. ‘));} };//调用匿名内部类的重写方法。bird . fly();}}匿名内部类是Java中函数式编程的基础(下文长度解释)。
第5章:引用类型的传递5.1-类名作为参数和返回值的概述(理解)
作为方法类名的参数,方法的参数是类名。其实需要的是实际传递的对象的[地址值]。作为方法的返回值,返回值是类名,实际上是这个类的对象传递的。它也是该对象的[地址值]的一个示例:
public person { public void eat(){ system . out . println(‘ eat ‘);} } public class Test { public static void main(String[]args){ method(new Person());person p=method 2();}耻骨静态虚空法(人p){ p . eat();}公共静态Person method 2(){ return new Person();}}5.2-抽象类作为参数和返回值的概述(理解)
方法的参数是抽象类名,但需要的是抽象类的子类对象。方法的返回值是抽象类名,但它实际上返回的是抽象类的子类对象示例。
公共抽象类动物{公共抽象void eat();} public类cat扩展animal { public void eat(){ system . out . println(‘想吃鱼’);} } public class Test { public static void main(String[]args){ method(new Cat());动物a=method 2();}公共静态void方法(动物a){ a . eat();}公共静态动物method 2(){ return new cat();}}5.3-接口名作为参数和返回值的概述(理解)
方法的参数是接口名,但需要的是接口的实现类对象。方法的返回值是接口名,但它实际上返回的是接口的实现类对象的一个例子。
公共接口Fly{公共抽象void Fly();}公共类bird实现fly { public void fly(){ system . out . println(‘自由飞翔’);} } public class Test { public static void main(String[]args){ method(new Bird());fly f=method 2();}公共静态void方法(Fly f){ f . Fly();}公共静态Fly method 2(){ return new Bird();}}

其他教程

macbook哪一年推出的(为什么选择macbook)

2022-8-29 13:18:42

其他教程

macbook pro m1芯片(apple m1 max性能)

2022-8-29 13:20:49

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索