java核心第四章对象与类

1、java类的四大特征

封装、抽象、继承、多态

2、类与类之间的关系

依赖(“use-a”);聚合(“has-a”);继承(“is -a”)

3、对象与对象变量

要想使用对象就要构造对象,并指定初始状态,在java 中用构造器来构造新实例。

构造器

(1)构造器的名字应该与类同名;

(2)构造器可以有0,1或多个参数;

(3)构造器没有返回值;

(4)构造器伴随new操作一起调用

例子:Date 类的构造器名为Date,构造一个新的Date对象, new Date();

4、java类库中的LocalDate类

LocalDate aa=LocalDate.now();//构造当前的日期

LocalDate bb=LocalDate.of(1999,12,31);//提供年月日将构造的对象保存到对象变量中

int year =bb.getYear();//1999

int month =bb.getMonthValue();//12

int day =bb.getDayOfMonth();//31

5、更改器和访问器

public void setAge(int x){
  age = x;
}
public int getAge(){
    return age;
}

6、安全

计算机中的安全,通常指的是多线程下的并发安全

访问器和更改器要保证多线程下的并发执行,需要代码的配合

例子同下:

7、线程

Thread t1 =new Thread(){
    public void run(){
      System.out.println("111");
 }
};
Thread t2 =new Thread(){
    public void run(){
      System.out.println("222");
 }
};
t1.start();//start()不是立即执行的,而是将线程,转为就绪态,等待被选中
t2.start();

虽然线程都是在main线程中创建的,但是当创建完成后,就各自执行各自的,没有先后顺序。

多线程并发执行的时候,可能会在任何一步切换线程,这就导致了,线程并发执行过程中的不安全。

例子:

解决线程并发执行过程中安全性的问题:

在A类中重新设置一个数组,在线程t1和t2中都调用这个重新设置数组,相当于构建了两个不同的数组,这两个数组的指向的地址是不变的,但当其中一个数组修改自己的指向地址时,并不会对另外一个数组的指向地址和公共区域的指向地址产生影响,这样设计的多线程并发执行,就达到了绝对安全。

8、重载

pubic Person(){System.out.println("");}
pubic Person(int x){System.out.println("");}
pubic Person(int x,String b){System.out.println();}

重载就是具有相同的方法名,但是参数不同

9、final在修饰引用类型的时候,只能保证整体不会发生变化,以数组为例,虽然被final修饰的数组不能整体发生修改,但是可以通过修改数组中某个位置的元素。所以final大多数情况下修饰基本类域或不可变类域。final表示存储在一个变量中的对象,不会再指向其他对象。

10、静态域和静态方法

private  static int ww=1;//静态域
public static void Person(){}//静态方法

一个静态的常量在其他的了类中可以直接调用;但是一个非静态的常量需要,在其他的类中new一个此类,才可以调用这个非静态常量

static定义一个静态,本质上是给这个静态的类、方法、常量分配一个空间,而非静态的,其实只是理论上存在的,并不是在计算机上已经存储的。

11、传递有两种方式,一种是引用传递一种是值传递,在java中支持的是值传递

 12、无参数构造器

public Employee(){

}

13、默认域初始化

数值默认0;布尔类型默认FALSE;引用类型默认null。

在方法中声明的变量是没有默认值的,在类中声明的变量才有默认值,初始化方法中的局部变量必须声明,初始化类中的域会自动默认初始值。

14、显示域初始化

人为赋给域(常量)值得方式,叫做显示初始化

15、调用另一个构造器

在一个类中,如果想在一个构造器中使用另外一个构造器,需要使用this关键字,

public Person(){
this(Employee(int x));//在person构造器中使用Employee构造器
}

同时需要注意的是,在使用this的时候,需要吧this放在构造器的第一行。

16、析构器

因为java中存在垃圾回收器,所以我么不需要在,java中构造析构器,但是在c++中我们需要构造

但是有时候,某些对象使用了内存之外的其他资源,例如文件或使用了系统资源的另一个队象的句柄,在这种情况下,资源不在使用的时候回收就很重要。因此在任何一个类中添加finalize,finalize方法会在垃圾回收器清楚对象前调用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值