面向对象(匿名对象)(封装和private关键字)

匿名对象:就是没有名字的对象---是对象的一种简化形式

A:有名字的对象---Student A = new Student();----其中A就是对象名

B:匿名对象:new Student();

匿名对象使用情况

A:使用对象调用方法仅仅只有一次-----调用多次不合适

class Student {
	public void show() {
		System.out.println("我爱学习");
	}
}

class StudentDemo {
	public void method(Student s) {
		s.show();
	}
}

//测试类
class NoNameDemo {
	public static void main(String[] args) {

     //匿名对象
    new Student();
    //匿名对象调用方法
    //创建匿名对象并直接使用调用方法
    new Student().show();
   
}

B:可以作为实际参数进行传递

class Student {
	public void show() {
		System.out.println("我爱学习");
	}
}

class StudentDemo {
	public void method(Student s) {
		s.show();
	}
}
//测试类
class NoNameDemo {
	public static void main(String[] args) {

    //匿名对象作为实际参数传递
   //调用 StudentDemo中的方法
   //分析得--方法是引用型的形式参数并且是参数类型是类类型
   //参数实际传递的是Student这个对象
   StudentDemo  A = new StudentDemo ();//-------创建了一个有名字的对象
   new Student();------创建了一个匿名对象
   //利用对象传递参数并调用方法
   A.method(new Student());//----匿名对象作为实际参数传递


}

private:(私有的)
        是一个权限修饰符
        可以修饰成员变量和成员方法
        被其修饰的成员只能在本类中被访问

private常见的应用

A:把基本类中成员变量用private修饰

B: 被其修饰的成员只能在本类中被访问

class Demo {

	//int num = 10;

	//用private修饰并初始化赋值对成员变量
	private int num = 10;
	
	public void show() {
		System.out.println(num);
	}
    private void method() {
		System.out.println("method");
	}
	
	public void function() {
        //调用方法语句----通过这条语句来访问私有的成员方法
		method();
	}
}
//测试类
class PrivateDemo {
	public static void main(String[] args) {
        //创建对象进行对类方法的访问
		Demo d = new Demo();

		//不能直接使用对象.变量名访问private修饰的成员变量
        //private修饰的成员变量和成员方法----需要通过本类中的成员方法进行访问
		//System.out.println(d.num);

        //通过本类中的成员方法进行访问是正确的
		d.show();

		//不能通过对象.成员方法名-----去访问私有的成员方法。
		//d.method();
        
        //如果访问私有的成员方法----需要通过本类中公有的方法进行访问调用
        //对象名.公有成员方法名----此时的公有方法内包含了一个对私有方法的调用
		d.function();
	}
}

private案例分析

A:private修饰成员变量赋值问题

注意:被private修饰的成员只能在本类中访问。

a:对于成员变量进行赋值----不能直接使用(对象.成员变量名)进行赋值

b:成员变量的赋值需要通过方法传入参数进行赋值

1.首先在基本类中定义一个方法---其类型为引用型参数类型---填写参数列表中传入参数的类型在方法中使用赋值将传入的数据赋值给成员变量。

2.在测试类中使用(对象.方法名(参数))进行对成员变量的赋值

//定义一个学生类
class Student {
	//姓名
	String name;
	//年龄
	private int age;

    //通过Java配套的setXxx进行传入参数式赋值
    public void setAge(int a){
   
       age = a;
   }
    

    public void show() {
		System.out.println("姓名:"+name);
		System.out.println("年龄:"+age);
	}


}
//测试类
class StudentDemo {
	public static void main(String[] args) {
		//创建学生对象
		Student s = new Student();
        //通过创建对象直接调用成员方法
		s.show();//----输出结果为---nooll----0;此时的输出的成员变量没有赋值但其自身具有默认值

		System.out.println("--------------");
		
		//给成员变量赋值
		s.name = "林青霞";

        //给private修饰的成员变量进行赋值
        //不能直接通过对象.成员变量名直接赋值
		//s.age = 27;

        //如果需要赋值则需要通过方法赋值-----需要Java提供的setXxx方法进行赋值  
        //对象名.方法名(传入参数)
		s.setAge(27);
		
        //输出查看赋值成员变量后的结果
        s.show();
		System.out.println("--------------");
}

学生案例1截图:

class Student {
	//姓名
	String name;
	//年龄
	private int age;
	
	//写一个方法对数据进行校验
	/*
		返回值类型:void
		参数列表:int a
	*/
	public void setAge(int a) {
		if(a < 0 || age > 120) {
			System.out.println("你给的年龄有问题");
		}else {
			age = a;
		}
	}
	
	
	//show()方法,显示所有成员变量值
	public void show() {
		System.out.println("姓名:"+name);
		System.out.println("年龄:"+age);
	}
}

class StudentDemo {
	public static void main(String[] args) {
		//创建学生对象
		Student s = new Student();
		s.show();
		System.out.println("--------------");
		
		//给成员变量赋值
		s.name = "林青霞";
		//s.age = 27;
		s.setAge(27);
		s.show();
		System.out.println("--------------");
		
		//给age赋值
		//s.age = -27; //这个数据是不合理的
		//通过方法给值
		s.setAge(-27);
		s.show();
		System.out.println("--------------");
	}
}

封装和private的应用:

A:etXxx()和setXxx()方法---对成员变量赋值和获取成员变量数据

学生案例2加强版(代码)

//定义学生类
class Student {
	//姓名
	private String name;
	//年龄
	private int age;
	
	//姓名获取值
	public String getName() {
		return name;
	}
	
	//姓名设置值
	public void setName(String n) {
		name = n;
	}
	
	//年龄获取值
	public int getAge() {
		return age;
	}
	
	//年龄赋值
	public void setAge(int a) {
		age = a;
	}
}

//测试类
class StudentTest {
	public static void main(String[] args) {
		//创建学生对象
		Student s = new Student();
		
		//使用成员变量
		//错误:被私有修饰了,外界不能直接访问了
		//System.out.println(s.name+"---"+s.age);
		System.out.println(s.getName()+"---"+s.getAge());
		
		//给成员变量赋值
		//s.name = "林青霞";
		//s.age = 27;
		//通过方法给赋值
		s.setName("林青霞");
		s.setAge(27);
		System.out.println(s.getName()+"---"+s.getAge());
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值