变量
局部变量和成员变量的区别?
1)在类中的位置不同
成员变量:成员位置—在类中,方法外定义的变量
局部变量:在方法定义中,或者方法声明上的变量
2)在内存中的位置也不同
成员变量:在堆内存中
局部变量:在栈内存中
3)生命周期
成员变量:随着对象的创建而存在,随着对象的回收而消失
局部变量:随着方法调用而存在,随着方法的调用完毕而消失
4)初始化不同
成员变量:跟对象相关的,描述一个对象的属性(成员变量存在一个系统默认初始化),当然也可以直接赋值
局部变量:在使用之前,必须初始化,否则编译不通过
注意事项:
当成员变量名称和局部变量名称一致,通过成员方法访问变量名称的时候,采用就近原则!局部位置没有,成员位置找!
参数
基本类型作为方法的形式参数,形式参数的改变不会影响实际参数 引用类型作为方法的形式参数,形式参数的改变会直接影响实际参数
匿名对象
就是没有名字的对象
格式:
new 类名(); 有名字的对象:类名 对象名 = new 类名() ;
匿名对象应用场景:
1)实际开发中,仅使用一次即可!
匿名对象直接在堆内存开辟空间,使用完毕,立即从内存中释放调用
2)使用匿名对象的时候,可以链式编程(开发中不建议使用这种方式)
new 类名1().方法名1(new 类名2()) ;
后期使用过程中:(面向对象高级部分)集合框架 IO流
封装
在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装的优点
-
良好的封装能够减少耦合。
-
类内部的结构可以自由修改。
-
可以对成员变量进行更精确的控制。
-
隐藏信息,实现细节。
private
private是访问控制修饰符,用来使用访问控制符来保护对类、变量、方法和构造方法的访问。
在程序中需要隐藏类的实现细节和保护类的数据时,就要使用private来修饰。
例
class Phone{
private String pinpai;
private String color;
private String jiage;
private String neicun;
public void Phone(String pinpai,String color,String jiage,String neicun){
this.pinpai = pinpai ;
this.color = color ;
this.jiage = jiage ;
this.neicun=neicun;
}
public void setpinpai(String pinpai){
this.pinpai = pinpai ;
}
public void setcolor(String color){
this.color = color ;
}
public void setjiage(String jiage){
this.jiage = jiage ;
}
public void setneicun(String neicun){
this.neicun = neicun ;
}
public String getpinpai(){
return pinpai ;
}
public String getcolor(){
return color ;
}
public String getjiage(){
return jiage ;
}
public String getneicun(){
return neicun;
}
public void dadianhua(){
System.out.println("正在打电话...") ;
}
public void paizhao(){
System.out.println("正在拍照...") ;
}
public void liaotian(){
System.out.println("正在聊天..") ;
}
}
class PhoneShiWu{
public static void main(String[] args){
Phone p = new Phone();
p.setpinpai("华为");
p.setcolor("土豪金") ;
p.setjiage("3998元") ;
p.setneicun("128g");
System.out.println(p.getpinpai()+"---"+p.getcolor()+"---"+p.getjiage()+"---"+p.getneicun());
p.dadianhua();
p.paizhao();
p.liaotian();
}
}
this
作用:
this.属性名称
指的是访问类中的成员变量,用来区分成员变量和局部变量(重名问题)
class Student{
private String name;
private int age;
private String gender;
private String faxing;
public void Student(String name,int age,String gender,String faxing){
this.name = name ;
this.age = age ;
this.gender = gender ;
this.faxing=faxing;
}
public void setName(String name){
this.name = name ;
}
public void setAge(int age){
this.age = age ;
}
public void setGender(String gender){
this.gender = gender ;
}
public void setFaxing(String faxing){
this.faxing = faxing ;
}
public String getName(){
return name ;
}
public int getAge(){
return age ;
}
public String getGender(){
return gender ;
}
public String getFaxing(){
return faxing;
}
public void study(){
System.out.println("正在学习JavaSe...") ;
}
public void eat(){
System.out.println("饿了,该吃饭了...") ;
}
public void play(){
System.out.println("学习累了,玩游戏放松一下...") ;
}
public void smoke(){
System.out.println("精神不振,抽根烟吧...") ;
}
}
class StudentShiWu{
public static void main(String[] args){
Student s = new Student();
s.setName("张三");
s.setAge(39) ;
s.setGender("男") ;
s.setFaxing("短发");
System.out.println(s.getName()+"---"+s.getAge()+"---"+s.getGender()+"---"+s.getFaxing());
s.study();
s.play();
s.smoke();
s.eat();
}
}