學(xué)習(xí)目標(biāo)
- 描述類和對(duì)象
- 如何定義類以及如何創(chuàng)建對(duì)象
- 構(gòu)造方法
- 引用變量和引用類型
定義對(duì)象的類
面向?qū)ο蟪绦蛟O(shè)計(jì)OOP就是使用對(duì)象進(jìn)行程序設(shè)計(jì)窗宇。
類:是一個(gè)模板措伐、藍(lán)圖,用來(lái)定義對(duì)象的數(shù)據(jù)域是什么以及方法是做什么的军俊。
對(duì)象:代表現(xiàn)實(shí)世界中可以明確標(biāo)識(shí)的一個(gè)實(shí)體侥加,每個(gè)對(duì)象都有自己的屬性、狀態(tài)和行為粪躬。
- 一個(gè)對(duì)象的屬性是指那些具有它們當(dāng)前值的數(shù)據(jù)域担败。
- 一個(gè)對(duì)象的行為,是由方法定義的镰官。調(diào)用對(duì)象的一個(gè)方法就是要求對(duì)象完成一個(gè)行為提前。
- 一個(gè)對(duì)象是類的一個(gè)實(shí)例,可以從一個(gè)類中創(chuàng)建多個(gè)實(shí)例泳唠,創(chuàng)建實(shí)例的過(guò)程稱為實(shí)例化(instantiation)狈网。
Java類使用變量定義數(shù)據(jù)域,使用方法定義行為(動(dòng)作),類還提供了構(gòu)造方法笨腥,
的特殊類型的方法拓哺,調(diào)用它可以創(chuàng)建一個(gè)新的對(duì)象,構(gòu)造方法本身是可以完成任何行為的脖母,但是
構(gòu)造方法主要為了完成初始化動(dòng)作拓售。
定義類和創(chuàng)建對(duì)象(實(shí)例)
要求:程序構(gòu)造了三個(gè)圓對(duì)象,半徑分別為1.0镶奉、25和125础淤,然后顯示這三個(gè)圓的半徑和面積,將第二個(gè)對(duì)象的半徑改為100哨苛,然后顯示它的新半徑和面積鸽凶。
public class TestCircle1 {
public static void main(String[] args) {
Circle1 circle1 = new Circle1();
System.out.println("半徑為:" + circle1.radius+ "的圓的面積為:" + circle1.getArea() );
Circle1 circle2 = new Circle1(25);
System.out.println("半徑為:" + circle2.radius+ "的圓的面積為:" + circle1.getArea() );
Circle1 circle3 = new Circle1(125);
System.out.println("半徑為:" + circle3.radius+ "的圓的面積為:" + circle1.getArea() );
circle2.radius = 100;
System.out.println("半徑為:" + circle1.radius+ "的圓的面積為:" + circle1.getArea() );
}
}
class Circle1{
double radius;
Circle1() {
radius = 1.0;
}
Circle1(double newRadius){
radius = newRadius;
}
double getArea(){
return radius * radius * Math.PI;
}
}
要求:每臺(tái)電視機(jī)都是一個(gè)對(duì)象,每個(gè)對(duì)象都有狀態(tài)(當(dāng)前頻道建峭、當(dāng)前音量玻侥、電源開或關(guān))以及動(dòng)作(換臺(tái)、調(diào)節(jié)音量亿蒸、開關(guān)電視)
* 如果打開電視凑兰,那么頻道和音量都沒(méi)改變掌桩,在改變其中任何一個(gè)之前,必須檢查當(dāng)前值
* 是否在一個(gè)規(guī)定正確的值內(nèi)姑食。
*
*/
public class TV {
//設(shè)置TV的默認(rèn)屬性
int channel = 1;
int volumeLevel = 1;
boolean on = false;
public TV(){
}
public void turnOn(){
on = true;
}
public void turnOff(){
on = false;
}
public void setChannel(int newChannel){
if (on && newChannel >=1 && newChannel <= 120){
channel = newChannel;
}
}
public void setVolumeLevel(int newVolumeLevel){
if (on && newVolumeLevel >=1 && newVolumeLevel <= 7){
channel = newVolumeLevel;
}
}
public void channelUp(){
if (on && channel < 120){
channel ++;
}
}
public void channelDown(){
if (on && channel >1){
channel --;
}
}
public void volumeUp(){
if (on && volumeLevel <7)
{
volumeLevel++;
}
}
public void volumeDown(){
if (on && volumeLevel >1){
volumeLevel--;
}
}
}
構(gòu)造方法
構(gòu)造方法是一種特殊的方法波岛,具有一下特征
- 構(gòu)造方法必須具備和所在類相同的名字
- 構(gòu)造方法沒(méi)有返回值類型,連void都沒(méi)有
- 構(gòu)造方法是創(chuàng)建一個(gè)對(duì)象使用new操作符時(shí)調(diào)用音半,構(gòu)造方法也快成重載则拷,這樣更有利于用不同的
初始化值來(lái)構(gòu)造對(duì)象。
通常一個(gè)類會(huì)提供一個(gè)沒(méi)有參數(shù)的構(gòu)造方法曹鸠,稱為無(wú)參構(gòu)造方法煌茬。一個(gè)類可以不定義構(gòu)造方法,在這種情況下彻桃,類會(huì)隱形的定義一個(gè)
方法提為空的無(wú)參構(gòu)造函數(shù)(類中沒(méi)有明確定義任何構(gòu)造方法時(shí)才會(huì)提供它坛善。)