关键字
定义:一些已经有了指定含义的词语。(在java中不能被随意替换或者移除)
例如:
与类相关:public private protected class interface implements extends import package
abstract
与方法函数/属性相关:void return static final
八大基本数据类型:int short byte long char boolean double float
循环判断:for switch do while break continue if case
异常:try catch throw throws finally
其他:this super
goto(保留字)
以上都是一些java中基本的关键字。
访问修饰符在:
四个访问修饰符:public,protected,默认(不写),private(能被调用的范围依次降低)
修饰符是能够作为对对象起修饰保护作用的,经常在调用和继承中使用,
Private:
被private修饰的方法\属性只能被当前类下被调用而当前包中的其他类,外部包均不能调用。当然,public、protected、默认修饰的在这种情况下也能被调用。下图中就有能够被调用的几大属性。
默认不写的情况下:能够被当前包下的不同类所继承而调用,下图是在相同com.learn包下的Test类,而在父类中能够被调用的就只有age、sex、name。没有了length。
Protected:是能够被外部包中的子类所调用,只不过调用的时候是外部包子类的对象,而父类的对象只能调用游public所修饰的方法\属性。
Public(Protected):能够修饰类,方法属性,能被当前工程下的所有子类继承,调用
相比其他能被调用的范围,public(Protected也能调用)在外部包里面也能被调用,比如说:
Com.learn包中的DrawBoard类
package com.learn;
public class DrawBoard {
public String name;
protected int age;
string sex;
private int length;
public void Study(){
System.out.println("学生上课");
}
}
cn.class包中student类
package cn.clas;
import com.learn.DrawBoard;
public class Student extends DrawBoard{
public static void main(String[] args) {
Student db = new Student();
db.name = "张三";
db.age = 20;
db.sex ="nan";
db.length = 22;
}
}
上面两个不同包下的两个类,在继承的情况下,能被调用的两个属性看到了,name、age是能够被调用的,而sex、length是不能被调用的(下面有红色横线,提示错误)。
Public和protected所修饰的不同是在外部包中调用时protected调用的必须是子类的对象,public是针对所有当前工程的类。是公共所有的。
下面整理成表,方便理解:
| 当前类 | 当前包下的类 | 包外子类 | 外部包 |
public | OK | OK | OK | OK |
protected | OK | OK | OK |
|
默认 | OK | OK |
|
|
private | OK |
|
|
|
(现目前了解的就是这四种修饰符类型)
关键字:
This,final,super,static。
This:当前类的对象
:有时候我们要用到一些内部类和匿名类,此时运用的this指的是匿名类或内部类本身,而当我们需要调用外部类的属性和方法的时候,就得加上外部类的类名。
:在构造函数中,通过this能够调用同一类中别的构造函数。
Super:
Super与this相似,不过调用的父类中已经存在的数据类型,与this一样调用参数。
格式基本相同
普通方法和属性调用:
this.方法名(),this.属性名
this();
super.方法名(),super.属性
super();
子类的构造函数如果要引用super的话,必须吧super放在函数的首位,需要引用this时也必须放在函数首位。而且不能同时出现在一个函数中(两者都需要放在首位,会冲突;而且this构造函数会调用其他的构造函数,当然也包括由super调用的函数)
final关键字:
final关键字有“无法改变的”“终极的”含义,(其中包括final类,final方法,final变量,final参数)也就是说被final修饰的属性或者方法,值一旦给定将不能被更改,当然final变量可以先声明,而不给初值,这种变量称作空白变量,无论什么情况,编译器都确保空白final在使用之前必须被初始化。并在初始化之后不能被改变。(修饰的任何方法、属性、变量、参数都不能被重写)
static(静态的)关键字:
可以用来修饰:方法、属性、静态块
///格式:
注意一点:静态方法中一定不能直接使用非静态属性或者方法
package com.learn;
class DrawBoard {
// public static void main(String[] args) {
public static String name ;
static{
System.out.println("猪八戒");
}
{
System.out.println("zhang");
}
}
Test类中:
package com.learn;
public class Test extends DrawBoard{
public static void main(String[] args) {
DrawBoard db1 = new DrawBoard();
DrawBoard db2 = new DrawBoard();
DrawBoard db3 = new DrawBoard();
db1.name = "张三";
db2.name = "李四";
db3.name = "王五";
System.out.println(db1.name);
System.out.println(db2.name);
System.out.println(db3.name);
}
}
运行之后结果如下: