我的Java学习笔记-05类和对象

面向对象概述

对象
类实质上就是封装对象属性和行为的载体,而对象则是类抽抽象出来的一个实例


类实质上就是封装对象属性和行为的载体
类中对象的行为是以方法的形式定义的
对象的属性是以成员变量的形式定义的

封装性
将对象的属性和行为封装起来,其载体就是类
类通常对客户隐藏实现细节

继承性
继承性主要利用特定对象之间的共有属性
子类的实例都是父类的实例,但父类的实例不一定是子类的实例

多态性
将父类对象应用于子类的特征就是多态
提到多态,就不得不提到抽象类和接口,因为多态的实现并不依赖
于具体类,而是依赖于抽象类和接口

类的成员变量和类的成员方法统称为‘类成员’
成员变量

public class Test{	
	private int a;//成员变量定义
}

成员方法

public class Test{
	public void Meth(){
 	};//成员方法定义
}

权限修饰符
可以修饰类,类成员

private
如果类成员被修饰为private则类成员只可在本类使用,对子类以及其他包的类均不可见
如果类被修饰为private则类隐藏其数据,用户不可访问
注:如果想让类被子类或者其他包的类只用,则需设置为public;如果父类不允许通过继承产生的子类访问父类的成员变量,那么该成员变量应该被修饰为private

public
如果类成员被修饰为public则可以在本类,子类以及其他包的类可见
注:如果子类与父类不在同一个包那么,父类必须修饰为public才能被子类访问

protected
如果一个类被修饰为protected则只有本包内的属于该类的子类以及本包内的其他类可以使用,其他包的类不可使用

注:如果不设置访问权限,则默认为包存取范围,即只有这个包中的类可以调用

package com.mypack
class Test{//无权限修饰符
	public void meth(){//有public修饰,但受类权限约束作用范围同类,即public无效
	}
}

局部变量
局部变量在方法被‘执行时’创建,‘结束时’被销毁
局部变量在定义时必须被赋值,否则出错
在不同作用区域内可以使用变量名相同的变量

this关键字

public class Test{//定义类
	public int a;//定义成员变量
	public void Meth(int a){//定义成员方法
	this.a=a;//将参数a的值赋值给成员变量
	}
}

注:this关键字用来表示‘类对象的引用’,即当在类的成员方法或者局部变量覆盖成员变量时,明确this关键字引用的是类成员

类的构造方法

类中除了成员变量以及成员方法外还有构造方法
构造方法与类同名,对象的创建就是通过构造方法完成的
‘每实例化一个对象就时,类就会自动调用构造方法’

public class Test{//定义类
	public Test(){//定义构造方法,无返回值,不需要使用void
	}//如果用户没有定义构造方法,则系统自动创建不带参数的构造方法
}

静态变量、常量和方法

static关键字
static可以声明变量、常量以及方法
被修饰为静态的成员‘属于类所有’

public class Test{
	final static double=PI=3.14;//定义静态常量
	static int a;//定义静态变量
	public static void Meth(){//定义静态方法
	}
	public void main(String[] args){
		System.out.println(class.PI);//调用静态常量,类.静态成员名
		System.out.println(class.a);
		System.out.println(class.Meth);
	}
}

注:在方法体中不可定义静态变量;静态方法中不可使用this关键字;静态方法不可直接调用非静态方法;被定义为静态域中的内容会被首先执行,且只会执行一次

public class Test{//定义类
	static{//定义静态域
	...
	}
}

类的主方法

public static void main(String[] args){	
	...
}

注:由于主方法为静态方法,故主方法调用的方法也必须为静态

对象

对象创建
对象为类的一个实例,可以通过new操作符类创建对象,实例化一个对象会自动调用构造方法
即可以时用new操作符调用构造方法来创建对象

Test a=new Test();

访问对象的属性和行为

public classTest{//定义类
	int a=1;//定义类的成员变量
	public void Meth(){//定义类的成员方法
		System.out.println("meth");
	}
	public static void main(String[] args){
		Test b=new Test();//创建对象,此时b‘代表了’类Test因而具有类里边的类成员
		b.a=2//对象调用类成员
		b.Method();//对象调用类成员
	}
}

对象的比较

String a=new String("1");
String b=new String("2");
String c=a;
System.out.println(b==c);//返回值为false
System.out.println(b.equals(c));//返回值为true

注:‘==’比较的是两个对象的地址,‘.equals’比较的是两个对象的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值