• 封装(Encapsulation)
  • 继承(Inheritance)
  • 多态(Polymorphism)

成员变量

  1. 静态变量(static variable)/ 类变量(class variable)
    静态变量是和该类所创建的所有对象相关联的变量,改变其中一个对象的这个静态变量就同时改变了其它对象的这个静态变量。
    静态变量可以通过某个对象访问,也可以直接通过类名访问。
    注:通过类名访问静态变量是一个好的编程习惯.
  2. 实例变量(instance variable)
    不同对象的实例变量互不相同,即分配了不同的内存空间
    实例变量必须通过对象访问.
  3. 常量 (final variable/constant)
    final修饰,声明时必须要初始化。
    常量的名字中的所有字母习惯用大写字母
    可以通过对象访问,但不能通过类名访问

方法

方法类型

  1. 实例方法(instance method)
    可以调用该类中的实例方法、静态方法
    可以操作实例变量、静态变量
  2. 静态方法(static method)/类方法
    只能调用该类的静态方法,不能调用实例方法
    只能操作静态变量,不能操作实例变量
  3. 构造方法(constructor)

传值

java方法的所有参数都是“传值”的(pass by value),
方法中参数变量的值是调用者指定的值的拷贝。
方法如果改变参数的值,不会影响向参数“传值”的变量的值。
(1) 基本数据类型参数的传值
(2) 引用类型参数的传值
(对象object、数组array、接口interface)
当参数是引用类型时,“传值”传递的是变量的引用(reference)而不是变量所引用的实体(entity)。
如果改变参数变量所引用的实体,就会导致原变量的实体发生同样的变化,因为,两个引用型变量如果具有同样的引用(reference),就会有同样的实体(entity)

方法重载

方法重载(overload)是指一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。

this

this是Java的一个关键字,可以出现在实例方法(instance method)和构造方法(constructor)中
——> 代表使用该方法的当前对象。
this.成员变量;
this.方法;

package

example

1
2
package pwk;
package cn.edu.szu.javapd.pwk;

import

![more](https://docs.oracle.com/javase/ JDK 7, …, JDK 18)

1
2
3
4
5
6
7
8
9
import java.util.Date;
public class Example4_11
{
public static void main(String args[])
{
Date date=new Date();
System.out.printf("Local time: \n%s", date);
}
}

访问权限

private

私有成员变量和私有方法,只有在类内创建、访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Employee
{
private double salary=1800;
public void setSalary(double salary)
{
this.salary=salary;
}
public double getSalary()
{
return salary;
}

public static void main(String args[])
{
Employee zhang = new Employee();
Employee wang = new Employee();
zhang.setSalary(100);
System.out.println("zhang's salary:"+zhang.getSalary());
wang.salary=3888; // 合法
System.out.println("wang's salary:"+wang.getSalary());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Employee
{
private double salary=1800;
public void setSalary(double salary)
{
this.salary=salary;
}
public double getSalary()
{
return salary;
}
}

public class Example4_14
{
public static void main(String args[])
{
Employee zhang = new Employee();
Employee wang = new Employee();
zhang.setSalary(100);
System.out.println("zhang's salary:"+zhang.getSalary());
wang.setSalary(3888);
//wang.salary=88888; ERROR!!!
System.out.println("wang's salary:"+wang.getSalary());
}
}

protected

在不同的包中,子类能访问

public

任何类内创建 类对象 后都可以访问它的共有变量和共有方法
在不同包

friend

不用private, public, protected修饰的成员变量和方法被称为友好成员变量和友好方法
同一个包内可创建和访问

summary

——————————————————————————————————————————————————————————————————————
同一类class 同一个包package 不同包通过子类 不同包
public √ √ √ √
protected √ √ √
default √ √
private √
——————————————————————————————————————————————————————————————————————
类内: private, friendly (or default), protected, public
包内: friendly (or default), protected, public
子类不同包: protected, public
不同包: public
———————————————————————————————————————————————————————————————————————

对象

1
2
3
4
5
6
7
char a[]={'a','b','c','D','E','F'};

Integer m[] = new Integer[10]; //每个元素都是Integer类型的对象,目前还是空对象
for(int i=0;i<10;i++)
{
m[i] = new Integer(101+i); //创建对象
}

反编译和文档生成器

使用javap.exe可以将字节码反编译为源码,查看源码类中的方法的名字和成员变量的名字
javap java.awt.Button
javap -private java.awt.Button
使用javadoc.exe可以制作源文件类结构的html格式文档