黑马程序员技术交流社区
标题:
黑马程序员——基础篇——面向对象
[打印本页]
作者:
Himoriarty
时间:
2015-3-25 21:35
标题:
黑马程序员——基础篇——面向对象
[ 本帖最后由 Himoriarty 于 2015-6-10 14:29 编辑 ]\n\n[ 本帖最后由 Himoriarty 于 2015-6-10 14:26 编辑 ]\n\n<a target="blank">java培训</a>、期待与您交流! ----------
面向对象:1、什么时候使用静态?因为静态修饰的是成员变量和函数,当对象中出现共享数据时,该数据被静态修饰,对象中的特有数据要定义成非静态存在于堆内存中。2、什么时候定义静态函数?当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义为静态。
3、建立对象时,如:Person p = new Person();这句话都做了什么事情: 1)、因为new用到了Person,class,所以会先找到Person。class文件并加载到内存中。 2)、执行该类中的是static 代码块如果有的话,给Person。class类进行初始化。 3)、在堆内存中开辟空间,分配内存地址。 4)、在堆内存中建立对象的特有属性,并进行默认初始化。 5)、对属性进行显示初始化; 6)、对对象进行构造代码块初始化; 7)、对对象进行对应的构造函数初始化 8)、将内存地址给栈内存中的P变量。
[code]/*private 私有只在本类中有用
将age私有化以后,类以外及时建立了对象也不能直接访问,
但是人应该有年龄。就需要在person类中提供对应访问age的方式
注意:私有仅仅是封装的一种表现形式
对象一建立就会调用与之对应的构造函数
构造函数的作用:可以用于给对象进行初始化
构造函数的小细节:
当一个类中没有定义构造函数,那么系统会默认给该类加入一个空参数的构造函数
*/
class Person
{
private String name;
private int age;
Person()
{
System.out.println("name="+name+",age="+age);
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person();
}
}[/code]
练习心得:本人觉得采用if语句调试可以避免出现注释引起的问题,且可以嵌套调试不影响代码,
相比采用注释的方法调试程序更严谨,方便。
[code]class TV
{
static int channel = 1; /*初始化频道*/
static int volume = 1; /* 初始化音量*/
String volumelevel = "Novoice";
static Boolean on = false;
public void TV()
{
}
public void turnOn()
{
on = true;
}
public void turnOf()
{
on = false;
}
//设置频道
public static void setChannel(int newChannel)
{
if(on && newChannel > 1 && newChannel < 120)
{
channel = newChannel;
}
}
//设置音量
public void setVolume(int newVolume)
{
if(on && newVolume > 1 && newVolume < 7)
{
volume = newVolume;
}
}
//加频道
public static void channelUp()
{
if(on && channel < 120)
{
channel++;
}
}
//减频道
public void channelDown()
{
if(on && channel > 1)
{
channel--;
}
}
//增加音量
public void volumeUp()
{
if(on && volume < 7)
{
volume++;
}
}
//降低音量
public void volumeDown()
{
if(on && volume >= 1)
{
volume--;
}
if(on && volume <= 0)
{
System.out.println("Novoice");
}
}
}
public class TestTV
{
public static void main(String[] args)
{
TV tv1 = new TV();
tv1.turnOn();
tv1.setChannel(29);
tv1.setVolume(4);
System.out.println("tv1's channnel is " + tv1.channel
+ " and volume level1 is " + tv1.volume);
//调试1
if(true)
{
TV tv2 = new TV();
tv2.turnOn();
//嵌套调试1
if(false)
{
tv2.channelUp();
tv2.channelUp();
tv2.volumeDown();
}//嵌套调试1结束
}//调试1结束
//打印对应频道和音量
System.out.println("tv1's channnel is " + tv1.channel
+ " and volume level1 is " + tv1.volume);
//调试2开始
if(false)
{
System.out.println("tv2's channnel is " + tv2.channel
+ " and volume level1 is " + tv2.volume);
}
//调试2结束
}
}[/code]
----------android培训、java培训、java学习型技术博客、期待与您交流!------------
作者:
怪学究
时间:
2015-3-25 23:17
哇,你这视频看到第几天了?
作者:
Himoriarty
时间:
2015-3-27 16:55
怪学究 发表于 2015-3-25 23:17
哇,你这视频看到第几天了?
第六天,这个是借鉴C语言的,以前没学过java,感觉还是没缓过来。C里面有#if(0或1) #endif 来调试,比较方便。Java里面这个语句不行,所以就用if(true或false){ }.感觉还是挺麻烦的,但是比采用注释会好一些。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2