1.对象
User user1 = new User();
User user2 = user1;
user1和user2引用同一对象,user2对象改变则影响user1.
2.this关键字
在方法内使用this来引用当前的对象。
3.参数传递两种方式
(1)简单类型传递是按值传递,在调用方法时,其参数值的改变不会影响到传递的参数。
(2)对象的传递是按引用传递,在调用方法时,其参数对象的改变会影响到传递的参数对象。对象传递是指向同一个对象。不必指定返回类型
4.static
方法和变量声明为static.
变量为static则为全局变量。所有该类的对象共享同一个static变量。
static方法:仅限调用其它static方法;只能访问static数据;不能引用this,super.
public static void main(String[] args) {
one(32);
TestMain.one(12);
}
static int a = 5;
static int b;
static { //static 代码块,在该类第一次加载时执行且执行一次
b = a * 3;
}
static void one (int x){
System.out.print("x = "+x);
System.out.print(" a = "+a);
System.out.print(" b = "+b);
b = x;
System.out.println(" b = "+b);
}
结果:
x = 32 a = 5 b = 15 b = 32
x = 12 a = 5 b = 32 b = 12
5.super关键字
(1)调用父类的构造函数
(2)super.方法/变量 -- 调用父类的成员(调用被子类隐藏的父类成员)。例如子类和父类的变量一样时,子类会隐藏父类的变量。
6.方法重写
(1)子类重写父类的方法,即有相同的方法名和类型声明。父类的方法被隐藏。用super.method()调用。
(2)若与父类的方法名相同,参数类型或个数不同就是重载,而非重写。
(3)父类变量引用子类对象,变量引用被重写的方法(子类方法)
7.抽象类
(1)声明抽象方法,但不提供方法的实现。而子类必须重写父类的抽象方法。
(2)如果要求子类必须重写父类的方法,则父类应定义为抽象类(abstract)。
看一个实例:
abstract class Figure {
double width;
double length;
double depth;
Figure(double width, double length) {
this.width = width;
this.length = length;
}
abstract double area();// abstract method
}
--------------------------------------------------------------------------------
class Rectangle extends Figure {
Rectangle(double width, double length) {
super(width, length);
}
@Override
double area() {
return width * length;
}
}
--------------------------------------------------------------------------------
class Triangle extends Figure {
Triangle(double width, double length) {
super(width, length);
}
@Override
double area() {
return width * length / 2;
}
}
--------------------------------------------------------------------------------
User user1 = new User();
User user2 = user1;
user1和user2引用同一对象,user2对象改变则影响user1.
2.this关键字
在方法内使用this来引用当前的对象。
3.参数传递两种方式
(1)简单类型传递是按值传递,在调用方法时,其参数值的改变不会影响到传递的参数。
(2)对象的传递是按引用传递,在调用方法时,其参数对象的改变会影响到传递的参数对象。对象传递是指向同一个对象。不必指定返回类型
4.static
方法和变量声明为static.
变量为static则为全局变量。所有该类的对象共享同一个static变量。
static方法:仅限调用其它static方法;只能访问static数据;不能引用this,super.
public static void main(String[] args) {
one(32);
TestMain.one(12);
}
static int a = 5;
static int b;
static { //static 代码块,在该类第一次加载时执行且执行一次
b = a * 3;
}
static void one (int x){
System.out.print("x = "+x);
System.out.print(" a = "+a);
System.out.print(" b = "+b);
b = x;
System.out.println(" b = "+b);
}
结果:
x = 32 a = 5 b = 15 b = 32
x = 12 a = 5 b = 32 b = 12
5.super关键字
(1)调用父类的构造函数
(2)super.方法/变量 -- 调用父类的成员(调用被子类隐藏的父类成员)。例如子类和父类的变量一样时,子类会隐藏父类的变量。
6.方法重写
(1)子类重写父类的方法,即有相同的方法名和类型声明。父类的方法被隐藏。用super.method()调用。
(2)若与父类的方法名相同,参数类型或个数不同就是重载,而非重写。
(3)父类变量引用子类对象,变量引用被重写的方法(子类方法)
7.抽象类
(1)声明抽象方法,但不提供方法的实现。而子类必须重写父类的抽象方法。
(2)如果要求子类必须重写父类的方法,则父类应定义为抽象类(abstract)。
看一个实例:
abstract class Figure {
double width;
double length;
double depth;
Figure(double width, double length) {
this.width = width;
this.length = length;
}
abstract double area();// abstract method
}
--------------------------------------------------------------------------------
class Rectangle extends Figure {
Rectangle(double width, double length) {
super(width, length);
}
@Override
double area() {
return width * length;
}
}
--------------------------------------------------------------------------------
class Triangle extends Figure {
Triangle(double width, double length) {
super(width, length);
}
@Override
double area() {
return width * length / 2;
}
}
--------------------------------------------------------------------------------