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)相关推荐

  1. 对象属性的调用_PyQt5面向对象编程,类和类的继承

    "前面的文章讲了新建一个面板的代码流程,但是它是面向过程的,这种编程思路繁琐且不易移植,而面向对象的编程思路就没有这些问题" 01面向对象编程 假设我们想制作几个面板,每个面板上有 ...

  2. 对象属性结构赋值_面向对象之构造器、代码块和内部类

    一.构造器(构造方法) 1.构造器的声明格式 语法格式 举 例: 注:构造器都会默认的声明super关键字,调用父类的构造器,不显示的声明,则程序会自动的调用Object类的无参构造器 2. 构造器的 ...

  3. python用来初始化对象属性的是_猪行天下之Python基础——8.1 类与对象

    内容简述: 1.面相对象的理解 2.类与对象 3.继承 4.组合 5.对象相关的内置函数 1.面相对象的理解 考虑到部分读者可能没有接触过面向对象编程,所以先介绍下面向对象的一些特征,形成一个面向对象 ...

  4. 对象属性结构赋值_(六)面向对象-下

    (六)面向对象-下 关键字:static static 可以用来修饰的结构:主要用来修饰类的内部结构 属性.方法.代码块.内部类 static修饰属性:静态变量(类变量 属性,是否使用static修饰 ...

  5. db4o_8.0对象数据库官方文档翻译_学习笔记三

    紧接上篇:db4o_8.0对象数据库官方文档翻译_学习笔记二 3. Object Manager Enterprise Overview(OME视图)即OME插件的使用 If you did not  ...

  6. java class 生成对象_面向对象编程,你知道Java有哪些创建对象的方式吗?

    来源:CSDN____爱敲代码的小游子 1.用new关键字创建对象,需要使用构造器. new 一个对象经过了哪些过程? 2.使用反射机制创建对象,用Class类或Constructor类的newIns ...

  7. cdr对象管理器怎么用_CorelDRAW中默认对象属性管理教程-cdr默认对象属性设置方法_好特教程...

    CorelDRAW 中的默认对象属性可控制活动文档中文本和图形对象的外观.例如,当您第一次安装 CorelDRAW 时,图形对象的默认属性将确定每个新图形对象都具有黑色轮廓并且没有填充. 您可以修改以 ...

  8. win32 bios 类 对象编辑器 拒绝访问_面向对象的可复用设计模式之代理模式(13/24)...

    代理模式(Proxy pattern)就是给某一个对象提供一个代理,并由代理对象控制对原对象的引用.在一些情况下,一个客户不想或者不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作 ...

  9. java.lang.object源码_第三篇:java.lang.Object 类源码分析

    Object所包含的方法如下: ① public Object(); 构造函数: 大部分情况下,类对象的声明,都是通过构造函数完成的(Java中规定:在类定义过程中,对于未定义构造函数的类,默认会有一 ...

最新文章

  1. UA OPTI512R 傅立叶光学导论7 线性平移不变系统简介
  2. 一行Java代码竟能获取tomcat的绝对路径
  3. ArcGIS Desktop 10.5 安装教程(win10环境下)
  4. 6条策略提高mysql查询速度 潇湘博客
  5. 今天来谈谈Python中的各种排序总结,含实现代码
  6. Django REST framework API开发
  7. 【转载】.NET设计模式之抽象工厂模式(Abstract Factory)
  8. CDH hive的安装
  9. android编译framework架包运行报错 (转)
  10. Atitit 互操作之道 接口之道 attilax著
  11. Ubuntu中锐捷客户端的配置与使用
  12. mdf转sql mysql_如何将SQL数据库.MDF格式的导入到mysql数据库里面啊
  13. 基于校园图书管理系统需求分析
  14. 微软宣布与神州数码合作希望利用区块链技术优化金融、电子商务、娱乐等行业!
  15. 计算机毕业设计springboot睎晴贸易公司安保保洁管理平台
  16. 关闭localized intellij idea切换语言提醒
  17. ps批量处理dds转tga
  18. STM32L系列简介
  19. Flutter的菜鸟教程
  20. Material Design的基础知识

热门文章

  1. 一步一步SharePoint 2007之三十一:实现文档Event Handler(3)——附加Handler程序
  2. 《众妙之门——Web用户体验设计与可用性测试》一第2章 在网页设计中通过测量数据优化情感投入2.1 情感应答和行为应答的关系...
  3. WIN7移动硬盘格式化问题RAW格式读取 XP移动硬盘读取异常分析 移动硬盘格式不兼容...
  4. lnmp环境搭建 wordpress 博客系统
  5. 【Classification】分类的进阶
  6. bseg---faglflexta
  7. SAP ERP差异来源和差异处理
  8. ABAP程序性能优化
  9. 交易性金融资产的账务处理
  10. 生产订单结算时候的几个差异