匿名对象
:没有名字的对象
* 匿名对象的好处:节省代码,使用方便
* 用处:当你只调用一个方法的时候使用,如果要反复调用一个方法,用匿名对象会比较浪费内存的空间
ublic class PersonDemo {
//赋值name,调用sayhi方法
public static void fun(Body p,String name)
{
p.name = name;
p.sayHi();
}
public static void main(String[] args) {
Body p1 = new Body();
Body p2 = new Body();
p1.name = "haha";
p2.name = "hehe";
p1.sayHi();
p2.sayHi();
//相同的语句可以抽成一个方法,增加代码的复用性
new Body();//匿名对象
new Body().sayHi();//匿名对象调用方法
fun(new Body(), "张三");
}
}
class Body{
String name;
int age;
//介绍自己的方法
public void sayHi()
{
System.out.println("我叫"+name+",我今年"+age);
}
}
封装
:把属性和方法的具体实现隐藏,开放公共访问的方法,成员变量私有化是封装的一种表现形式
* 私有化之后一定要写set 和 get方法
* private系统的关键字(也可以叫做权限修饰符),该属性添加了private关键字就变成私有的属性了,私有属性本类中可以访问,本类以外不能访问
* 如何访问private修饰的成员变量?
* 在私有属性所在的函数中写获取和修改值的函数,set和get方法
public static void main(String[] args)
{
Phone phone = new Phone();
phone.setName("iphoneX");
phone.color = "黑色";
phone.sayHi();
System.out.println("名字是"+phone.getName());
}
}
class Phone{
private String name = "iphone";//private系统关键字将变量的属性私有化,成员变量私有化
String color;
public void sayHi()
{
System.out.println(name + "----" + color);
}
//在本类中写一个方法来修改属性
//修改值的时候,一般用方法名set,获取值的时候,一般用方法名get
//修改属性的值
public void setName(String name)
{
this.name = name;// this关键字:代表本类的对象.this.name获取的就是成员变量的name
}
//获取变量
public String getName()
{
return this.name;
}
//就近原则
public void fun()
{
System.out.println(name);
String name = "vivo";
//就近原则
System.out.println(name);
}
构造方法
- 作用:对对象的属性(成员变量)进行初始化
- 写法:
- 1.构造方法的方法名与类名完全相同(大小写必须一样)
- 2.没有返回值类型(连void都不写)
- 3.没有返回值(没有return)
public static void main(String[] args)
{
Person person = new Person("小明","男");//初始化对象的时候,系统会自动调用person类的构造函数,无法自己来调用构造方法(不能使用对象.方法)
person.sayHi();
//初始化时,类名后面的括号中如果有参数,则说明类的构造方法中可以调入值,有参数的构造方法
Person p1 = new Person("王五", "男");//有参数的构造方法
p1.sayHi();
}
}
class Person
{
String name;
String gender;
public void sayHi()
{
System.out.println("我叫"+name+",性别是"+gender);
}
//构造方法,构造方法是系统自己调用的
public Person(String name,String gender)
{
//给对象的成员变量赋值
this.name = name;
this.gender = gender;
System.out.println("我是一个构造方法");
}
//构造方法,无参数
public Person()
{
this.name = "zhangsan";
this.gender = "nan";
}