类与对象--封装和构造方法

类与对象

#1.什么是面向对象
答:任何事务都可以被叫做对象,拥有自己的属性。把一个整体事务分成不同的对象,让每个对象去解决各自的属性和方法。
2.什么是面向过程:
面向过程是指一个整体的事务需要一步步完成,比如洗衣服的流程,先做什么在做什么。
3.什么类
(1)类是一种抽象的概率,具有相同的共同属性和行为功能的对象的抽象集合,类是对象的数据类型。对象是类的实例化结果。具体来说就是类是一个动物不同人的种类,对象是能摸的到真实存在的实体,例如狗,猫,它们有相同的属性,但是又有各自的区别。

类的组成:

(1)属性:类中用成员变量实现的

public class  Animal{
	int  age;//共同属性,成员变量
}

(2)行为:类中是通过方法实现的

public class  Animal{
	public void eat(){//成员方法
		System.out.println("所有动物都有吃这一行为")}
}

对象的使用

创建对象:类名 对象名 = new 类名();
类名 对象名=null; 对象名 =new 类名();//用来分析地址和空间的变化。

public class Animal{
	public static void mian(String[] args){
		Animai cat =new Animai();//创建对象
		/*创建方式二:
		Animail cat =null 创建一个栈地址
		cat =new Animal() 使用new创建一个堆空间,用栈地址指向堆空间
        */
		cat.age=18;//使用类的属性
		System.out.println(cat.age);
		cat.eat();//使用类的方法
}
}
public class Students{
	string name;
	int age;
	public void study(){
	System.out.println("好好学习");
}
}

单个对象和对个对象

Person p1 =new Person();
person p2 = new Person();
Person p3;
Person p4;
p3=p1;//地址指向的问题,等号右边赋值给左边

使用new则创建了一个堆空间,可以存储数据,不同的new则不同的堆空间,而Person p 相当于一个地址,利用p地址就可以访问空间数据,并进行赋值和修改。

成员变量和局部变量

成员变量:类中方法外面的变量,在类方法外面或者方法形参上,内存在堆内存,随着对象的存在而存在,有默认初始值

局部变量:类方法中,栈内存上,随着方法的调用而存在,没有默认初始值,必须要定义,才能使用。

封装

为什要封装?
答:通过测试类创建类的对象,可以调其他类中的属性(变量名),然而测试类中可以对其他类任意赋值,封装目的是将某个类特殊属性进行private(私有化),只能提供特殊的方法才可以调用和修改赋值。并且可以设置对其值修改的条件,在测试类输入错误值就不能正常运行。
封装原则:封装是面对对象的三大特征之一,是将某些信息隐藏在类内部,不允许外届程序直接访问,需通过特点方法进行调用。
#关键字
(1)private :权限修饰符,修饰成员变量和成员方法,主要特点是只允许本类才可以访问。
——使用private 修饰方法和变量的方法
【1】 public get变量名()

public void setAge(int a){
	//age=a;
	//this age =age ;形参中变量是age可以用this方法,后续讲到this
	if(a<0 || a>20 ){
		System.out.println("你给的值有误")}else
		{
		age=a;
		}//本方法限制条件就是封装的目的所在
}

【2】 public set变量名(参数)

 public int getAge(){
	return age ;
}
//调用此方法就可以获得age值

#this
this 修饰符变量是指代成员变量,需要与成员同名才可以使用。方法体中形参和成员变量同名,用this.age是指形参中age.
要点:this是解决局部变量隐藏成员变量
方法被那个对象所调用,this就代表那个对象,this就代表那个对象的栈地址。 不同的new就是不同的堆空间,不同对象中的this就是不同的栈地址。

public void setAge(int age){
	//this age  = age;

构造方法

构造方法是一种特殊的方法,主要是创建对象的和完成对象的初始化。无参构造方法默认存在,建议书写一遍

public calss Student{//  
	public Student(){//构造方法和类名同名
		System.out.println("无参数构造方法")
		//这里面写方法体,什么也不写也行。
}
public Student(int age){//带参构造方法//可以方法重载,一个方法中只要参数名,排序顺序,类型不同就是不同的方法
	this age = age;
	System.out.println(age);
}
//测试类
pubic class PersonDemo{
	public static void main(Sting[] args){
		Student p= per Student();//调用无参构造方法
	    Student p= per Student(30);//调用有参构造方法
		
	}
}

总结:封装函数的标准

public class Person{
	private int  age;
	private String name; //private私有化

	public Person(){
	//无参构造方法
}
	public Person(int age,String name ){//有参构造方法
		this.age = age;
		this.name = name;
}

	public void setAge(int age ){//对类中私有变量赋值
		this.age = age;
}
	public int getAge( ){//读取类中私有变量赋值
		return age;
}
	public void eat(){//类中的行为(方法)
	   System.out.println("需要吃");
	}
}

//测试类
public calss test{
	public static void main(String [] args){
	//无参构造方法
	Person p = new Person();
	p.setAge(18)//赋值
	p.getAge();
	p.eat();
	//方式二,有参构造方法
	Person s = new Person(18,“张三“”);
	s.eat();
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gun_wqy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值