进入OOP,掌握创建对象,构造函数,封装用法,this用法
2018-01-20 00:00
288 查看
学习面向对象,肯定要和面向过程做对比,面向过程就是不断地将问题不断地细小化,而面向对象,是找出可以解决问题的对象,让对象帮我们去解决问题。就有了类和对象两个重要的概念,类就是设计对象的图纸,抽象化,包涵属性,方法,构造函数,没有实体。而对象就是根据类产生的真正的实体,当对象产生时,我们也就拥有了属性,方法,当然对象先是通过构造函数来进行初始化的。然后我们可以通过对象引用来操作属性和方法。
构造函数我们需要注意的几个地方:名字一定和类名完全相同;没有返回值类型(注意和void区别),然后我们在没有定义构造函数时,系统会默认给类一个构造函数,无参,无方法体的函数,但一旦有构造函数时,就没有这个默认的构造函数。我们在创建对象时,是根据相应的构造函数来进行初始化的
例如:Dogd1=newDog();Dogd2=newDog(50,"black");他们会分别调用一个没有参数的构造函数进行初始化,一个调用有两个参数的构造函数进行初始化。
this的出现主要是有两种情况:一种是当成员变量名字和局部变量名字相同时,为了区别哪个为成员变量,哪个为局部变量,加上this(如this.变量名)他就表示调用我的对象的属性;
setName(Stringname)
{
this.name=name;//this.name就表示调用setName这个方法当前的对象的name.
}
另外一种是一个构造函数来调用另外一个构造函数的情况下,来使用this来表示
如:Dog(){}
Dog(intweight){this()},这个this就代表Dog(){}这个构造函数
紧接着我回忆下学过的封装:封装这个概念理解是理解了,但是感觉说出来好口语化,封装就是把我们需要实现的代码进行包装,然后对外提供访问的方式。封装它时java语言的一大特点,首先封装表现在很多方面:函数就是实现了封装,类就是是实现了封装等,它具有使用方便,代码重复行加强,实现安全操作。
private这个关键词,就是把所修饰的方法和属性进行私有化,只有本类内部可以访问,外面的类无法访问,当然我们提供了对外访问的方式(最常用的setter和getter方式)。
以下代码是今天根据的所学内容打的代码:
/*
需求:我们定义一个Dog类,在这个类里面有两个属性和一个方法,还有三个构造函数
分析:
先定义类
1,写出成员属性(将属性设定为private),定义两个构造函数
2,再将设置为private的属性对外提供公共访问方式
3,定义一个shout方法
*/
classDog
{
privateintweight;
privateStringcolor;
//定义一个无参的构造函数
Dog()
{
System.out.println("我没有体重和颜色");
}
//定义一个有两个参数的构造函数
Dog(intweight,Stringcolor)
{
System.out.println("myweightis"+weight+","+"mycoloris"+color);
}
//此方法只是来练习一个构造方法来调用另外一个构造方法
Dog(Stringcolor)
{
this();
}
//对外提供getWeight的方法
publicintgetWeight()
{
returnweight;
}
//对外提供setWeight的方法
publicvoidsetWeight(intweight)
{
this.weight=weight;
}
//对外提供getcolor的方法
publicStringgetcolor()
{
returncolor;
}
//对外提供setColor的方法
publicvoidsetColor(Stringcolor)
{
this.color=color;
}
//定义一个shout方法
publicvoidshout()
{
System.out.println("myweightis"+weight+","+"mycoloris"+color);
}
}
/*
1,我们定义一个测试Dog类的publicclassDogTest
2,在函数体内,我们创建两个对象,一个对象有参数,一个对象无参数,再创建一个匿名对象
3,分别通过对象调用setWeight()和setColor()
4,然后通过对象调用shout()
*/
publicclassDogTest
{
publicstaticvoidmain(String[]args)
{
//创建两个对象
Dogd1=newDog();
Dogd2=newDog(50,"black");
//我只想通过构造函数的调用来实现,构造函数调用另外一个构造函数
Dogd3=newDog("black");
//创建一个匿名对象
newDog(60,"gery");
//通过对象来调用setWeight()和setColor()来设定我们想要的值
d1.setWeight(70);
d1.setColor("white");
d2.setWeight(120);
d2.setColor("grey");
//通过对象调用shout()
d1.shout();
d2.shout();
}
}
构造函数我们需要注意的几个地方:名字一定和类名完全相同;没有返回值类型(注意和void区别),然后我们在没有定义构造函数时,系统会默认给类一个构造函数,无参,无方法体的函数,但一旦有构造函数时,就没有这个默认的构造函数。我们在创建对象时,是根据相应的构造函数来进行初始化的
例如:Dogd1=newDog();Dogd2=newDog(50,"black");他们会分别调用一个没有参数的构造函数进行初始化,一个调用有两个参数的构造函数进行初始化。
this的出现主要是有两种情况:一种是当成员变量名字和局部变量名字相同时,为了区别哪个为成员变量,哪个为局部变量,加上this(如this.变量名)他就表示调用我的对象的属性;
setName(Stringname)
{
this.name=name;//this.name就表示调用setName这个方法当前的对象的name.
}
另外一种是一个构造函数来调用另外一个构造函数的情况下,来使用this来表示
如:Dog(){}
Dog(intweight){this()},这个this就代表Dog(){}这个构造函数
紧接着我回忆下学过的封装:封装这个概念理解是理解了,但是感觉说出来好口语化,封装就是把我们需要实现的代码进行包装,然后对外提供访问的方式。封装它时java语言的一大特点,首先封装表现在很多方面:函数就是实现了封装,类就是是实现了封装等,它具有使用方便,代码重复行加强,实现安全操作。
private这个关键词,就是把所修饰的方法和属性进行私有化,只有本类内部可以访问,外面的类无法访问,当然我们提供了对外访问的方式(最常用的setter和getter方式)。
以下代码是今天根据的所学内容打的代码:
/*
需求:我们定义一个Dog类,在这个类里面有两个属性和一个方法,还有三个构造函数
分析:
先定义类
1,写出成员属性(将属性设定为private),定义两个构造函数
2,再将设置为private的属性对外提供公共访问方式
3,定义一个shout方法
*/
classDog
{
privateintweight;
privateStringcolor;
//定义一个无参的构造函数
Dog()
{
System.out.println("我没有体重和颜色");
}
//定义一个有两个参数的构造函数
Dog(intweight,Stringcolor)
{
System.out.println("myweightis"+weight+","+"mycoloris"+color);
}
//此方法只是来练习一个构造方法来调用另外一个构造方法
Dog(Stringcolor)
{
this();
}
//对外提供getWeight的方法
publicintgetWeight()
{
returnweight;
}
//对外提供setWeight的方法
publicvoidsetWeight(intweight)
{
this.weight=weight;
}
//对外提供getcolor的方法
publicStringgetcolor()
{
returncolor;
}
//对外提供setColor的方法
publicvoidsetColor(Stringcolor)
{
this.color=color;
}
//定义一个shout方法
publicvoidshout()
{
System.out.println("myweightis"+weight+","+"mycoloris"+color);
}
}
/*
1,我们定义一个测试Dog类的publicclassDogTest
2,在函数体内,我们创建两个对象,一个对象有参数,一个对象无参数,再创建一个匿名对象
3,分别通过对象调用setWeight()和setColor()
4,然后通过对象调用shout()
*/
publicclassDogTest
{
publicstaticvoidmain(String[]args)
{
//创建两个对象
Dogd1=newDog();
Dogd2=newDog(50,"black");
//我只想通过构造函数的调用来实现,构造函数调用另外一个构造函数
Dogd3=newDog("black");
//创建一个匿名对象
newDog(60,"gery");
//通过对象来调用setWeight()和setColor()来设定我们想要的值
d1.setWeight(70);
d1.setColor("white");
d2.setWeight(120);
d2.setColor("grey");
//通过对象调用shout()
d1.shout();
d2.shout();
}
}
相关文章推荐
- 黑马程序员_进入OOP,掌握创建对象,构造函数,封装用法,this用法
- 黑马程序员--03.Java面向对象--01.【OOP基本概念】【匿名对象】【封装】【构造函数】【this关键字】
- 关于创建对象时调用构造函数和析构函数的若干问题
- JS中定义对象方式三: 使用构造函数方式创建对象
- Java使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数
- 简单掌握Linux系统中fork()函数创建子进程的用法
- JavaScript构造函数及原型对象 使用Object或对象字面量创建对象 工厂模式创建对象 构造函数模式创建对象 原型模式创建对象 构造与原型混合模式创建对象
- JavaScript高级程序设计之面向对象的程序设计之创建对象之稳妥构造函数模式 第6.2.7讲笔记
- JavaScript原型对象、构造函数和实例对象功能与用法详解
- 使用伪命名空间封装保护独自创建的对象方法
- 黑马程序员_06_面向对象_成员变量_匿名对象_封装_构造函数_thisPrivate
- js中创建对象时,工厂方式与构造函数方式中this的区别
- C#利用反射动态创建对象 带参数的构造函数和String类型
- 深入理解JavaScript的创建对象(构造函数、原型对象、实例)
- 为什么在创建子类对象的时候会调用父类的构造函数
- js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
- 类,对象,封装,构造函数,析构函数
- 对象创建的方法二之------构造函数模式
- 一步步学习javascript基础篇(4):面向对象设计之创建对象(工厂、原型和构造函数等模式)
- JavaScript构造函数及原型对象 使用Object或对象字面量创建对象 工厂模式创建对象 构造函数模式创建对象 原型模式创建对象 构造与原型混合模式创建对象