目录
1.设计对象并使用
类:描述一类对象的特征
对象:具体事物
要先创建类,才能创建具体对象
e.g:创建一个电脑类:
package csdn;
public class Computer {
//属性
String brand;
int price;
//行为
public void code(){
System.out.println("电脑在编程");
}
public void PlayGames(){
System.out.println("电脑在玩游戏");
}
}
创建电脑的对象:
package csdn;
public class ComputerTest {
public static void main(String[] args) {
//创建对象
Computer c=new Computer();
//初始化(赋值)
c.brand="DELL";
c.price=8000;
//获取对象属性
System.out.println(c.brand);//DELL
System.out.println(c.price);//8000
//调用对象方法
c.code();//电脑在编程
c.PlayGames();//电脑在玩游戏
}
}
类的几个注意事项:
①.用来描述一类事物的类,专业叫Javabean类,在这个类中,不写main方法
②.对象的属性通过成员变量体现,对象的行为通过成员方法体现
③.成员变量不需初始化,有默认值
2.封装
对象代表什么,就要封装相应的属性,并提供对应的行为
e.g:张三与李四发生口角,造成了李四的死亡,那么死亡这个行为应该封装到李四的类中
ps:private关键字,可以修饰成员,修饰后该成员只可在类内访问(防止在类外成员变量被非法赋值)
对于每个私有化成员变量,都要提供相应的set和get方法
e.g:创建女孩类
package csdn;
public class Girl {
private int age;
//赋值
public void setAge(int n){
if(n>60 ||n<18){
System.out.println("非法赋值");
}
else age=n;
}
//获取
public int getAge(){
return age;
}
}
测试:
package csdn;
public class GirlTest {
public static void main(String[] args) {
Girl g=new Girl();
g.setAge(17);//非法赋值
g.setAge(19);
System.out.println(g.getAge());//19
}
}
3.this关键字
e.g:
package csdn;
public class Girl {
private String name;
public void setName(String name){
name=name;
}
public String getName(){
return name;
}
}
package csdn;
public class GirlTest {
public static void main(String[] args) {
Girl g=new Girl();
g.setName("拉亚斯特");
System.out.println(g.getName());//null
}
}
这里发现姓名赋值失败,原因就是局部变量和成员变量重名缺少了this关键字
修改后即可正常赋值,获取
package csdn;
public class Girl {
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
}
4.构造方法
特点:①方法名与类名完全一样;②无返回值类型(也无void);③无返回值;④构造方法由虚拟机调用,不能手动调用;⑤每创建一次对象,构造方法就被调用一次
注意:如果没有定义构造方法,系统自动提供一个默认无参构造方法
含参构造和无参构造方法名相同,参数不同,属于重载
建议将无参构造和含全部参数的构造主动定义。
e.g:
package csdn;
public class Computer {
private String brand;
Computer(){
System.out.println("这是无参构造");
}
Computer(String brand){
this.brand=brand;
}
public void setBrand(String brand){
this.brand=brand;
}
public String getBrand(){
return this.brand;
}
}
package csdn;
public class ComputerTest {
public static void main(String[] args) {
Computer c=new Computer("DELL");
System.out.println(c.getBrand());//DELL
}
}
5.标准的JavaBean类
①.类名见名知意
②.所有成员变量用private修饰
③.至少提供两个构造方法(无参,含全部参数)
④.提供每个成员变量的set和get方法
生成方法快捷键:Alt+Insert(或Alt+Insert+fn)
①.Constructor:构造方法
选择Select None即快捷生成空参构造方法
按住Ctrl+A全选即快捷生成含全部参数的构造方法
②.Getter and Setter:生成指定成员变量的set和get方法
还有更便捷的生成方法插件:PTG,下载方法:File→Settings→Plugins→搜索→install
使用方法:右键点击空白处
点击Ptg to JavaBean即可一键生成
e.g:
package Object_oriented;
public class User {
private String name;
private int age;
//安装ptg
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "User{name = " + name + ", age = " + age + "}";
}
}
6.基本数据类型和引用数据类型
基本数据类型:整数类型,浮点数类型,布尔类型,字符类型。
引用数据类型:除了基本数据类型的其他数据类型。
从内存角度理解:
基本数据类型:数据存储在自己的空间,赋值时传递的是真实的值。
引用数据类型:数据存储在其他空间,自己存储的是数据的地址,赋值时传递的是地址值。
7.成员变量和局部变量的区别
区别 | 成员变量 | 局部变量 |
位置 | 类内,方法外 | 方法内 |
初始化 | 有默认初始化值 | 初始化是需要手动赋值 |
内存位置 | 堆 | 栈 |
生命周期 | 对象创建时存在,对象消失时消失 | 方法调用时存在,方法运行结束时消失 |
作用域 | 整个类 | 当前方法 |