static(静态块)与访问权限与包

1.

this的使用:this是属于一个对象的,而不是属于一个类的。当你创建了一个对象的时候,Java虚拟机就为每个对象都给了个this,this就指向了该对象了

this不能在外部使用,只能在类定义的部分中使用

public class Testthis{

int a,b,c;

Testthis(int a,int b){

this.a=a;

this.b=b;

}

Testthis(int a,int b,int c){

this(a,b);//注意这里,这里调用的是上面那个构造方法,但若直接写成Testthis(a,b)是错误的???谁会写;并且该句必须放在第一句

this.c=c;

}

void sing(){}

void eat(){}

public static void main(String args[]){

Testthis hi= new Testthis(2,3);

hi.eat();

}

}

其次,this不能用在static方法中,因为static方法是放在方法区当中的,this指向对象,因此它是在堆当中的。当你在static方法中用this,会发现里面都没有对象,因此是不可以的。

关于为什么this(a,b)必须放在第一句,原因在于:在构造函数中,如果你不指定构造器之间的调用关系,那么编译器会给你加上super();目的是在初始化当前对象时,先保证了父类对象先初始化。所以,你指定了构造函数间的调用,那么this()必须在第一行,以保证在执行任何动作前,对象已经完成了初始化,不然你还没初始化就在那里this.a+this.b啥的能没有问题吗?this()和super()为构造方法,作用是在JVM堆中构建出一个对象。因此避免多次创建对象,同一个方法内只能调用一次this()或super()。同时为了避免操作对象时对象还未构建成功,需要this()和super()的调用在第一行实现【以此来创建对象】,防止异常。

2.

类变量(静态变量):使用关键字"static"声明;访问权限 static 数据类型 变量名;

使用static的变量:在某一个类中声明了static变量(又叫类变量或静态变量),则该类的所创建的所有对象,全都共享这个变量。其他类是不共享这个变量的,也就是不能访问,即使要访问,也只能通过类变量所在的类来访问。

3.

类方法(静态方法):使用关键字"static"声明;访问权限 static 返回类型 方法名();

注意!类方法(或说静态方法)中只能访问类变量(或说静态变量)!因为静态方法在方法区中,而普通的成员变量、方法都在堆当中,因此不能够去调用。但在普通成员方法中是可以访问到静态方法的,因为静态方法和静态数据成员会随着类的定义而被分配和装载入内存中,而非静态方法和非静态数据成员只有在类的对象创建时在对象的内存中才有这个方法的代码段。

类似过来,静态方法中也就不能用this、super等了,因为this存在于堆当中,而静态方法存在于方法区中

4.

类变量和类方法是一种公共的属性,它并不是在每个对象中的个体属性。类变量或类方法可以通过类名.类变量/类方法的方式来访问,但是假若访问权限有控制,例如某个类变量

为private的,则不能去访问。

静态块:

static{

//执行语句

}

当程序加载类的时候就会自动调用它

5.

Java的特征:(抽象)封装 继承  多态

抽象:即使用类。类是对具体事物的一个抽象。

封装:封装就是把抽象出的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(即通过成员方法访问),才能对数据进行访问。

其实Java中,尽量地将成员变量设为Private的

6.

public:对外公开

protected:对子类和同一个包中的类公开

default:没有修饰符,对同一个包中的类公开

private:只有类本身可以访问,不对外公开

public>protected>default>private


访问权限
同一个类
同一个包

子类(不同包中)

不同的包

public
??
??

??

??

protected

??

??

??

 

default

??

??

同一个包下子类可以访问

 

private

??
 
 

 

7.包

package 包名    //一定是第一句

包名:域名倒着写即可,再加上模块名,便于内部管理,e.g:jd.com,那么包名就是com.jd,后面还可以加模块名

包相当于一个个文件夹

注意:com.chen和com.chen.car,这两个包没有包含关系,是两个完全独立的包,放在com.chen下的类属于chen里的,放在com.chen.car里的类,属于car里的,它们只是逻辑上看起来后者是前者的一部分


com.chen包

com.chen.car包

JDK中提供了很多默认的包,可以去Java API查找

  • 包命都是小写的;
  • 包的作用:区分相同名字的类;当类很多时,可以很好管理;控制访问范围;
  • 打包命令:在文件开头,有 ”package 包命“
  • 引包命令:用"import";
  • 一个包下,包含很多的类,Java中常用的包有:

java.lang.*:自动引入,不需要手动引入

java.util.*:工具包

      java.net.*:网络开发包

java.awt.*:窗口工具包

"import包.*"是很方便,但是它有会降低编译(不是运行)速度,而且这样不知道是哪个类

原文地址:https://www.cnblogs.com/Kundalini/p/11707751.html

时间: 2024-10-06 00:22:24

static(静态块)与访问权限与包的相关文章

部分关键字--this/extends/super/static/final/abstract/访问权限总结

1.this关键字的作用 1)调用本类中的属性; 2)调用本类中的构造方法;且只能放首行,且必须留一个构造方法作为出口,即不能递归调用 3)表示当前对象; 2.匿名对象 直接new出来的对象,不创建变量名,且只能使用一次,通常作为方法的参数及返回值使用 3.继承 关键字:extends 通过继承,子类可以直接访问父类中非私有的属性及方法 只允许单继承,但是可以多层继承 子类对象的实例化过程是先调用父类的构造器,再调用子类的构造器; 子类程序调用方法,先调用子类方法,如果子类没有再调用父类中的方法

Java基础总结--常用类以及包的访问权限

-----Object---所有类的根类1.怎么得到的:通过对所有对象不断的向上抽取共性,具备所有对象的共性的东西2.常用的方法* equals(Object obj):比较两个对象的引用是否指向同一个对象,本质就是引用地址是否相同,相同就返回true;作用和"=="一致,其子类继承后,只判断地址没有意义,一般会对该方法进行重写,重写后比较的是对象的特有内容是否相同.也用到了多态,为了代码的扩展性.eg字符串equals比较的就是内容.注意一个细节:重写后存在多态,若要访问子类特有数据

再谈包访问权限 子类为何不能使用父类protected方法

可见范围 权限的含义应该理解为控制范围,要把它理解成一个限制范围的空间,更为准确的说叫做可见范围 访问控制的等级,从最大权限到最小权限依次为:public.protected.包访问权限(没有关键词).和private public 所有地方都可以访问,没有任何疑问 private 只有自己本类可以访问,没有任何疑问 默认也就是包访问权限,顾名思义,包访问权限,也就是必须同一个包中才可以,即使是子类不在同一个包中也不行的 protected是默认包访问权限的扩展,默认是出了包的范围,就不行了,但

java类的访问权限

1.解析 Java有四种访问权限, 其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符. private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”.被其修饰的类.属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问. default:即不加任何访问修饰符,通常称为“默认访问模式“.该模式下,只允许在同一个包中进行访问. protect: 介于public 和 private 之间的一种访问修饰符,一般

【java编程思想--学习笔记(二)】访问控制-Java访问权限修饰词

如果不提供任何访问修饰词,则意味着它是"包访问权限". 2.1 包访问权限 包访问权限赋予包内的类相互访问彼此成员的权限. 应该说, 包访问权限为将类群聚在一起的行为提供了意义和理由,即建立包的目的不仅仅是为了分类和区分,更是为了是同一个包内的类可以拥有彼此的代码. 取得对某一成员访问权的途径: 1)该成员的访问修饰词为public. 2)通过不加访问权限修饰词并将目标类放在同一包内的方式. 3)继承.子类可以访问父类的public和protected修饰词的成员,但只有在父子类处于同

Java访问权限控制

访问权限控制   java提供了访问权限修饰词,以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的.访问权限控制的等级,从最大权限到最小权限依次是:public.protected.包访问权限(没有关键字).private. 包:库单元 包内有一组类,它们在单一名字空间之下被组织在了一起.如果你向导入某个标准库中的类的话,可以使用import关键字.我们之所以要导入,就是要提供一个管理名字空间的机制.所有类成员的名称都是彼此分离的.所以具有相同方法的不同类在程序运行时不会出现错误的.

Java访问性与包的讲解

一.Java中的访问控制 1.private修饰词,表示成员是私有的,只有自身可以访问: 2.protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问protected成员. 3.无修饰词(默认),表示包访问权限(friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ ),同一个包内可以访问,访问权限是包级访问权限: 4.public修饰词,表示成员是公开的,所有其他类都可以访问: 具体可见如下表: 表

Java 访问权限控制:你真的了解 protected 关键字吗?

摘要: 在一个类的内部,其成员(包括成员变量和成员方法)能否被其他类所访问,取决于该成员的修饰词:而一个类能否被其他类所访问,取决于该类的修饰词.Java的类成员访问权限修饰词有四类:private,无(默认情况下,包访问权限),protected 和 public,而其中只有包访问权限和public才能修饰一个类(内部类除外).特别地,很多的介绍Java的书籍对protected介绍的比较笼统,常常会对大家造成误解.因此,本文重点揭示了 protected 关键字的内涵和用法,并介绍了一些其他

2016年6月11日——访问权限控制符

今天我们来探讨一下访问权限控制符. 使用场景一:攻城狮A编写了ClassA,但是他不想所有的攻城狮都可以使用该类,应该怎么办? 使用场景二:攻城狮A编写了ClassA,里面有func1方法和func2方法,但是他只想提供func1给别的攻城狮使用,应该怎么办? 此时,应该使用Java当中的访问权限控制符:1.默认访问权限 2.public 3.private 4.protected 注意,上述四种访问权限,只有默认访问权限和public能够用来修饰类.修饰类的变量和方法四种权限都可以.(本处所说