欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

对象属性的调用_面向对象的三主线之一:Java类及类的成员(1)

发布时间:2025/3/20 java 51 豆豆
生活随笔 收集整理的这篇文章主要介绍了 对象属性的调用_面向对象的三主线之一:Java类及类的成员(1) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

01

属性

属性的赋值过程

①默认初始化值

②显式初始化

②在代码块中赋值

③构造器中初始化

④通过“对象.方法”或“对象.属性"方法赋值

注:显式初始化和代码块中赋值的先后取决于其顺序

this.属性

“this.属性”表示调用当前对象的属性。通常情况下省略“this”,只有在特殊情况下才会显式使用。

>>方法的形参和属性同名时

super.属性

“super.属性”表示调用当前父类中声明的属性。通常情况下省略“super”,只有在特殊情况下才会显式使用。

>>子父类定义同名的属性,想在子类中调用父类中声明的属性时。

属性继承

当子类继承父类后,子类就获得了父类中声明的属性包括声明为private的属性,只是因为封装性的影响,使得子类不能直接调用父类的私有属性。

创建子类对象,就会在堆空间中加载所有父类中声明的属性。

多态性不适用于属性

多态性只适用于方法,不适用于属性,是因为在多态中,属性的编译运行都看左边。

static修饰属性

实例变量 VS 静态变量

实例变量:每个对象都拥有一套类中的非静态属性,当修改其中一个对象的非静态属性时,不会导致其他对象中该属性的值发生变化。

静态变量:多个对象共享一个静态变量,当通过某一个对象修改讲台变量时,会导致其他对象调用此静态变量时是修改后的。

静态属性的说明

静态变量是随着类的加载而加载的,早于对象的创建。

由于类只会加载一次,静态变量在内存中也只会存在一份,存在于方法区的静态域中。

静态变量可以通过“类.属性”和“对象.属性”调用,实例变量仅可以通过“对象.属性”调用。

final属性

final修饰属性,可以考虑的位置:

>显式初始化

每个对象值一样时使用

>代码块中初始化

通常调用方法可能抛出异常时用

>构造器中初始化

每个构造器都得赋值,每个对象值都不同

static final 修饰属性

该属性即为全局变量,在类中始终不变的一个常量。

内部类和属性

>内部类调用外部类属性:“外部类.this.属性”

>内部类中可以定义属性

>“this.属性”指的是内部类的属性

代码展示一

class Base {
    int count = 10;

    public void display() {
        System.out.println(this.count);
    }
}

class Sub extends Base {
    int count = 20;

    public void display() {
        System.out.println(this.count);
    }
}

public class FieldMethodTest {
    public static void main(String[] args) {
        Sub s = new Sub();
        System.out.println(s.count);//20
        s.display();//20
        Base b = s;//多态性
        System.out.println(b == s);//true
        System.out.println(b.count);//10
        b.display();//20
    }
}

代码展示二

public class CircleTest {
    public static void main(String[] args) {
        Circle c1 = new Circle();
        Circle c2 = new Circle();
        Circle c3 = new Circle(3.4);
        System.out.println("c1的id:" + c1.getId());
        System.out.println("c2的id:" + c2.getId());
        System.out.println("c3的id:" + c3.getId());
        System.out.println("创建的圆的个数为:" + Circle.getTotal());
    }
}

class Circle {

    private double radius;
    private int id;// 自动赋值

    public Circle() {
        id = init++;
        total++;
    }

    public Circle(double radius) {
        this();
        this.radius = radius;

    }

    private static int total;// 记录创建的圆的个数
    private static int init = 1001;// static声明的属性被所有对象所共享

    public double findArea() {
        return 3.14 * radius * radius;
    }

    public double getRadius() {
        return radius;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }

    public int getId() {
        return id;
    }

    public static int getTotal() {
        return total;
    }
}

总结

以上是生活随笔为你收集整理的对象属性的调用_面向对象的三主线之一:Java类及类的成员(1)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。