【Java】类和对象1

类和对象1

什么是类?
类就是一类对象的统称。
例:自行车的设计图
什么是对象?
对象就是这一类具体化的实例。
例:一辆辆自行车

  • 类在Java中属于引用类型
  • 类中的元素称为:成员属性
  • 类中的函数称为:成员方法
  • 面向对象的三大特性: 封装、 继乘、多态

语法

定义类:

限定符(modifier) class 类名称{
    1.属性/静态属性
    2.方法/静态方法
    3.构造方法(必须要有,如果没定义,默认补一个无参的构造方法)
}

举例 :

public class Person
{
    public String name;
    public int age;
    public Person(String name,int age)
    {
        this.name = name ;
        this.age = age ;
    }
}

定义属性

限定符(modifier)变量类型  变量名称; 

定义方法

//限定符(modifier) 返回值类型  方法名称 (形参列表)
{
        //实现
}
public static int []  rotate(int []a,int k)
{
    
}

定义构造方法

限定符(modifier) 类名称  (形参列表)
{
}

构造方法:

  1. 方法名称必须与类名称相同
  2. 构造方法没有返回值类型声明
  3. 每一个类中一定至少存在一个构造方法
    1)没有明确定义,则系统自动生成一个无参构造方法
    2)如果一旦给出了构造方法,不再补默认构造方法;

创建对象的语法

类名称   对象名称 =  new  类名称(实参列表); (引用类型-类引用)

对象(引用数据类型)必须在实例化后调用,否则会产NullPointerException (运行时错误),
编译时不会出错。

实例化对象的语法:

new  构造方法(实参列表)
1)new 关键字     计算对象内存大小,在堆中申请内存空间,把空间都初始化为0X0;
2)执行构造方法,对属性进行初始化;
3)把对象的引用赋值给一个引用变量,如果需要;
总结:
	1.属性信息存放在堆区;
	2.类信息存放在方法区
	3.对象是存放在堆中的一块区域;
		存储的最主要的就是属性的值,也可以找到方法区中对象相应的类的信息;

例:

/*1)计算对象需要的内存大小,开辟空间,初始化为0
	p=malloc(sizeof (person));   memset(p,0x0,sizeof(person))
  2)调用构造方法、对属性初始化
  3)构造方法调用结束,返回一个指向新对象的引用
	   person  tmp =  新的对象;
*/
class person 
{  
    //一个源文件中只能有一个public类,该类的名称必须和文件名一样;
    //一个类会生成一个class字节码文件
	public String  name =null;
	public int gender =0;
	public int age=0e;
	public String toString()
	{
		return String.format("person(%s,%d %d),name,gender,age");
		//String.format   按照字符串格式化输出
	}
	//构造方法 用来初始化属性值
	public person (String n,int g,int a)
	{   
        name = n;
        gender=g;
         age=a;
	}
}	
	public class Course
	{
		public static void main(String [] args)
		{
			person p=new person("张三",2,4);
			System.out .println(p.toString());
		}			
	}

访问对象的属性或者调用对象的方法

  1. 如果在类的内部(在类的方法中访问类的属性和调用类的方法)
 访问属性         
 	 this.属性      
 	 this.name
 	 如果没有出现命名遮挡问题直接使用属性
     name
调用方法
     this.方法名称(实参列表)         
     this.toString();                              
     方法名称(实参列表)
     toString();
  1. 如果在类的外部(在其它类的方法中访问该类的属性和调用类的方法)
    1)访问属性
    对象的引用.属性名
    调用方法
    2)对象的引用.方法名称(实参列表)
//1.访问属性
Person p=new Person();   
p.name;   
//如果只调用一次可以使用匿名对象调用例:                                                            
new Person().name

//2.调用方法
Person p=new Person(); 
p.toString();
//如果只调用一次可以使用匿名对象调用例:   
new Person().toString;

理解:
Person p = null;
定义了一个没有指向任何对象的Per son类型的引用(类类型的引用)
Person p = new Person(…);
1)定义了一个Person类型的对象;
2)定义了一个指向Person类型的对象的Person类型的引用(类类型的引用)
引用类型和指向类型是两回事;
3)p是一个Person类型的引用,指向一个Person类型的对象

this 关键字的使用

  1. this调用本类属性
    通过this访问属性或方法(一般出现在发生了命名遮挡)
  2. this调用本类方法
    1)调用普通方法:this.方法名称(参数) ;
    2)调用构造方法:this(参数);
    3)在构造方法中调用其它构造方法,调用语句必须出现在第一行;
  3. this表示当前对象
    this 代表就是当前对象的引用

举例:

//1.通过this访问属性或方法(一般出现在发生了命名遮挡)
class Person()
{
    String name;
    //命名遮挡:在类方法中访问类的属性或方法,参数与类中属性同名时
    public Person(String name)
    {
        name = this.name;
        toString();//this.toString();
    }
    public String toString()
    {
        .................
    }
}
//2.在构造方法中调用其它构造方法,调用语句必须出现在第一行;
class Person(
{
    String name;
    public Person(String n)
    {
        name =n;
    }
    public Person()
    {
        this ("陌生人");
        //2)
        //1) name ="陌生人";   
    }
}
//3.this 代表就是当前对象的引用
class Person
{
    String name;
    public Person(String name)
    {
        this.name =name;
    }
    public String toString()
    {
        return this.name;
    }
    public boolean equals(Person p)
    {
        return p.name = this.name;
    }
    public void test()
    {
        this.equals(this);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值