2/0 类和对象,成员属性和成员方法

本文介绍了Java和C#中类和对象的概念,包括类的定义、对象实例化及其默认值,详细讲解了访问权限修饰符如private、public。探讨了成员方法,包括方法传参的值传递和地址传递,以及方法重载的原理和优势。还提到了构造方法的作用,this关键字的使用,并简要概述了垃圾回收机制在Java中的应用及其优缺点。
摘要由CSDN通过智能技术生成

类和对象的定义

类的定义

[访问权限修饰符] class 类名 {  
[private/protected/public]   成员的声明和定义 ;
}

【注意】

  • class是声明类的关键字,<类名>是标识符,通常以首字母大写开头,用来与对象名,方法和变量名区分。
  • 类体可以包含成员属性和成员方法两部分,成员属性声明必须以分号结束。
  • 定义一个类就相当于定义了一个类型和一个作用域。

访问权限修饰符

  • private 私有对象get set方法进行访问
  • protected
  • public 公共的

对象的实例化

  • 类只是抽象的数据类型,类对象才是具体可操作的实体。利用对象使用类提供的功能。
<类名>  <对象名> = new <类名> ([参数1,参数2,]) ;<类名>  <对象名>;
<对象名> = new <类名> ([参数1,参数2,]) ;

Student mary = new Student(18,"male");
或者
Student mary;
mary = Student(18,"male");

默认值

局部变量没有初始值,和成员属性不同
成员属性都有默认值

boolean -> false
char->‘u\0000’
byte short int ->0
long ->0L
float->0.0f
double->0.0
引用类型->null

类成员的访问

访问属性的一般形式:
<对象名>.<属性名>;
访问方法的一般形式:
<对象名>.<方法名>([<参数1><参数2>,…]);

private 私有化的成员只能通过公共的set方法和get方法传参。

特殊的访问形式:POJO类

名称:PoJo 类
特点:方法与属性成对出现,私有的属性公有的set和get方法。
作用:承载数据

public class Hanshu {
	  private String brand;
	  private int prince;//成员属性
	  
	  //成员方法((局部)变量在方法中定义)
	  public void setBrand(String brand) {
		  this.brand = brand;
	  }
	  
	  public String getBrand() {
		  return brand;
	  }
	  
	  public void setPrince(int prince) {
		  this.prince = prince;
	  }
	  
	  public int getPrince() {
		  return prince;
	  }
}

类的成员

Java中方法只能定义在类中,称为类的成员方法,基本的语法:
[方法修饰符] 方法返回值类型 方法名([<参数列表>]) {
方法体;
}

成员方法

方法修饰符

  • private 私有对象get set方法进行访问
  • protect
  • static 静态方法->中使用静态方法;或者实例化想使用的方法的类成为一个对象
  • final 常量或者方法不可重写的方法,类不可继承
  • abstract 提前声明的方法->表示抽象的方法,不具体。
  • synchronize 多线程,同步调用

方法传参

值传递

当参数为基本数据类型,不改变值

地址传递

当参数为引用类型 : 类、接口、数组、枚举,传递的都是引用值

【总结】

  • 当参数是基本数据类型时,方法不能修改实际参数的值。
  • 当参数是引用类型时,方法通过地址引用改变了实际参数对象的内容

方法重载

重载条件

  • 在同一个类中
  • 方法名称相同
  • 参数类型不同

重载优势

  • 对不同参数的方法调用变得简单
  • 是否是静态不作为重载依据
  • 重载方法之间互相调用
  • 返回值可以不同

特殊成员方法—构造方法

构造方法:将类实例化成对象时调用的方法。没有返回值,方法名和类名相同,使用new创建对象时自动调用
,而且只调用这一次。
1.假如定义了有参的构造方法,系统不会自动添加无参的构造方法。
2.假如没有定义构造方法,系统会自动为类构造一个无参的构造方法。

this关键字

  • this用于引用本类中的属性和方法
    • this.属性、this.方法()
  • this调用本类的构造方法
    • 使用this()、this(参数)的形式
    • this调用构造方法,只能放在重载的构造方法中的第一行
  • this还可以作为返回值,返回“当前调用方法”的那个对象的引用。
public class Count {
       private int num;
       public Count add(){
              num++;
              return this;
       }
       public int getNum() {
              return num;
       }
       public static void main(String[] args) {
              Count cou = new Count();
              cou.add().add();
              System.out.println(cou.getNum());
       }
} 

输出值为2.方法被调用了两次。

垃圾回收机制(面试易考)

在C程序中

  • 可以手工清理或者删除缓存中的数据,通过free进行清理工作。

手工内存管理的缺电

  • 如果程序中存在错误或缺陷会导致内存泄露。
  • 编写彻底手工内存管理的代码是一项重要而复杂的任务,所以会使复杂的程序的开发工作量加倍。

Java垃圾收集器

  • Java的“垃圾收集器”为内存管理提供了一种自动解决方案。

  • 对于程序中不再使用的内存资源,“垃圾收集器”能自动将其释放。

  • 自动垃圾收集的缺点

    • 不能完全控制“垃圾收集器”什么时候执行或不执行。(在Java程序中可以请求JVM运行垃圾收集器,但无法保证JVM会答应请求
  • 当Java感到内存不足时会运行垃圾收集器

  • 当没有引用能够访问对象时,该对象就是适合进行垃圾收集的。

** 垃圾回收情形一:空引用**

public class CatTest{
public static void main(String[] args){
     Cat c1;
     Cat c2;
     c1 = new Cat(“小花”);//创建对象和引用
     c2 = c1;
     c1 = new Cat(“小白”);
     c2=null;
 }
}

最后因为没有引用指向“小花”所以他是没有引用可以访问的对象,可以被进行垃圾收集。

垃圾回收情形二:隔离引用

public class Island{
  Island n;
  public static void main(String[] args){
        Island i2 = new Island(); 
        Island i3 = new Island(); 
        Island i4 = new Island();
        i2.n=i3;
        i3.n=i4;
        i4.n=i2;
        i2 = null;
        i3 = null;
        i4 = null;
  }
}

i1,i2,i3三个的指针部分相互引用,但是没有引用可以访问到他们三。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值