java面向对象之关键字,权限修饰符
1.关键字:this,static,package,import
this:
1、表示对当前对象的引用!
2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。
3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!
还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!
package:
便于管理大型软件系统中数目众多的类, 解决类名重名的现象;
static(不在堆里面也不在栈里面, 在数据区(data seg)):
如果声明了静态方法或变量,值是放在方法区,因为方法区是一个数据共享区;所以不管什么变量访问它,都是同一份.
在静态方法中不能直接访问实例方法和实例变量.
在静态方法中不能使用 this 和 super 关键字.
静态方法不能被 abstract 修饰.
静态的成员变量可以使用类名或者是对象进行访问,非静态成员变量只能使用对象进行访问.
静态函数可以直接访问静态的成员,但是不能够直接访问非静态成员.,非静态函数可以访问静态和非静态成员.
当类被加载时,静态代码块只能被执行一次。类中不同的静态方法代码块按他们在类中出现的顺序被依次执行.
当多个修饰符连用时,修饰符的顺序可以颠倒,不过作为普遍遵守的编码规范,通常把访问控制修饰符放在首位,其次是 static 或 abstac修饰符,接着就是其他的修饰符
import:
import关键字是用来导入包的,因为实际开发中,你不可能把所有的类都放在同一个default包里面。
包的作用就是给java类进行分拣,不同业务逻辑的java类放在同一个包中。比如工具包,实体包。
2.访问控制, 权限修饰符(private default protected public)
作用:用于控制被修饰变量,方法,类的可见范围。
puclic class 类名 {
private 类型 属性1; //私有的,只有本类能访问。
default 类型 属性2; //同一个包可以访问,不同包的字父类不能访问
protected 类型 属性3; //不同包的字父类可以访问得到,但是不同包的其他内容不能访问到
public 类型 属性4;//没有限制,所以都能访问到。public不是白叫的。
//set, get的用法
//在一个类被继承之后,我们可以在它的子类中,重新对父类的某些属性进行重新赋值,这就大大增加了代码的不安全性,所以,一般提供set,get两个成员方法,
来获取和修改父变量的某些属性。
public void setName(String name){ // 设置某些属性,需要传入参数
this.name = name; //因为是修改属性值,不清楚返回值类型,所以不用写ruturn;
}
public String getName(){ //获取某些属性的属性值
return name;//把需要获取的属性值ruturn出来,就可以那来使用了。
}
}

3.super关键字:
super表示当前对象对父类对象的一个引用,另外,super可以调用当前父类对象的构造函数。
注意: 子类调用父类的构造方法时,super语句必须是子类构造方法的第一句!!
public class Fu{ //父类
protected String name;
protected int age;
public Fu( String name,int age){ //这是父类 的一个构造方法,需要向里边传值
this.name = name;
this.age = age; //完成初始化
}
}
public class Zi extends Fu{ //子类 通过extends关键字,实现对父类的继承
public Zi(){ //这是子类的构造方法,也称为子类的构造器
super(String name,int age)//先把父类的构造方法引进来,若父类的构造方法没有传值,括号内的内容可以省略,super()可以不写,默认加上的;
}
//若父类和子类的属性值有重名现象(如name),则可以用super.name来表示父类的属性。
System.out.println(this.name+","+super.name)
}
4. final关键字
根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。
final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。
4-1、final类
final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。
4-2、final方法
如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。
使用final方法的原因有二:
第一、把方法锁定,防止任何继承类修改它的意义和实现。
第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。
4-3、final变量(常量)
用final修饰的成员变量表示常量,值一旦给定就无法改变!
final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。
从下面的例子中可以看出,一旦给final变量初值后,值就不能再改变了。
另外,final变量定义的时候,可以先声明,而不给初值,这中变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。
java面向对象之关键字,权限修饰符的更多相关文章
- java 基础 四种权限修饰符
/** * Java有四种权限修饰符: * public > protected > (default) > private * 同一个类 YES YES YES YES * 同一个 ...
- java(异常体系及权限修饰符)
java异常体系 异常的体系: 异常体系: --------| Throwable 所有错误或者异常的父类 --------------| Error(错误) --------------| Exce ...
- java四种访问权限修饰符
java中四个访问权限修饰符: public(公开的).protected(受保护的).default(默认的).private(私有的). 它们决定了紧跟其后被定义的东西的使用范围. 适用范围< ...
- java中四种权限修饰符区别
总的概括:public > protected > (default) > private 细分见下表格: 权限修饰符 public protected (default) priv ...
- Java第十二天,权限修饰符
Java当中权限修饰符共有四种.分别是public.protected.(default).private. 注:YSE代表可访问,NO代表不可访问. 同一个类 同一个包,非继承 不同的包,有继承 ...
- Java的四种权限修饰符
private:仅对本类可见 缺省(不需修饰符):对本包可见 protected:对本包及所有子类可见 public:对所有类可见 修饰符: * 权限修饰符:private,默认的,protected ...
- Java中类成员访问权限修饰符(public、protected、default、private)
1.public(公共的): 任何类都可以进行访问(最不严格). 2.protected(保护的): 同一包内的类以及其子类可以进行访问. 3.default(缺省的): 类中不加任何访问权限限定的成 ...
- Java面向对象之 接口: [修饰符] interface 接口名 {...};子接口:[修饰符] interface 接口名 extends 父接口,父接口2...{...}
1.什么是接口? 类比抽象类,把功能或者特性类似的一类 抽象的更彻底,可以提炼出更加特殊的"抽象类"----接口 2.如何定义接口 语法: [修饰符] interface 接口名 ...
- Java面向对象入门(2)-访问修饰符
Java访问修饰符–public, protected, private and default Java提供了四个访问修饰符来设置类,变量,方法和构造函数的访问级别,即public,private, ...
- Java面向对象_包装类访问修饰符
在java中有一个设计的原则"一切皆对象",java中的基本数据类型就完全不符合这种设计思想,因为八种基本数据类型并不是引用数据类型,所以java中为了解决这样的问题,jdk1.5 ...
随机推荐
- Google Authenticator加强ssh安全
一.安装依赖包 软件包可以在这个地址下载:https://pan.baidu.com/s/1r0CmwbtCfNiBqU9rh_TxtA yum -y install pam-devel tar jx ...
- linux 命令——56 ss(转)
ss是Socket Statistics的缩写.顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信 ...
- spa 小程序的研发随笔 (2) --- 预编译
因为是连续写的2篇随笔,废话不多说.直接进入正题. 选择预编译的工具时,笔者采用了gulp.虽然,如今市面上大多采用的多为webpack,使用gulp也是有自己的缘由的. webpack的最主要特点是 ...
- 轻松搞定Struts 2:三步走上手小入门
零.Struts 2是啥? SSH.SSM.SSI如雷贯耳,Struts 2 —— 是的,就这样了... 一.Hello Struts2 1.核心包 2.struts.xml核心控制器配置 <f ...
- form.elements属性
form.elements属性与childNodes属性不同的是form.elements只返回的是表单元素组成的数组,包括input,textarea等
- tomcat服务器配置域名访问项目server.xml
<?xml version='1.0' encoding='utf-8'?> <!-- Licensed to the Apache Software Foundation (ASF ...
- 2018.10.26 NOIP2018模拟赛 解题报告
得分: \(0+10+10=20\)(\(T1\)死于假题面,\(T3\)死于细节... ...) \(P.S.\)由于原题是图片,所以我没有上传题目描述,只有数据. \(T1\):颜料大乱斗(点此看 ...
- fflush - 刷新一个流
SYNOPSIS 总览 #include <stdio.h> int fflush(FILE *stream); DESCRIPTION 描述 函数 fflush 强制在所给的输出流或更新 ...
- 2018.2.5 PHP如何写好一个程序用框架
随着PHP标准和Composer包管理工具的面世,普通开发者撸一个框架已经不再是什么难事了. 无论是路由管理.ORM管理.还是视图渲染都有许许多多优秀的包可以使用.我们就像堆积木一样把这些包用comp ...
- python_57_高阶函数
变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数. def add(a,b,f): return f(a)+f(b) res=add(-3,- ...