Java入门学习笔记(六)——访问权限修饰符、方法的参数传递方式

一、访问权限修饰符

1.修饰属性和方法

类内部 包内部 子类 包外部
默认
public
private
protected

2.修饰类

类内部 包内部 子类 包外部
默认
public
private
protected

零碎的一些知识点

  1. 被private、protected修饰的类一定是内部类,对于独立定义的类,一般不能被定义为private或protected
  2. 内部类只能被定义所在的类内部访问
  3. 内部类不能作为超类
  4. 无任何修饰的类叫做友好类
  5. 在另一个类中使用友好类创建对象时,需要确保他们在同一个包内部

练习

在这里插入图片描述

PA

package PackageA;

public class PA {
    
    
	protected int id;
	protected String name;
	String sex;
	
	private class PA1
	{
    
    
		public void print()
		{
    
    
			System.out.println("在PA类内部定义的私有类PA1,仅供PA访问");
		}
	}
	
	protected class PA2
	{
    
    
		public void print()
		{
    
    
			System.out.println("在PA类内部定义的保护类PA2,仅供PA访问");
		}
	}
	
	public PA(int i,String s)
	{
    
    
		id=i;
		name=s;
	}
	
	protected int getId()
	{
    
    
		return id;
	}
	
	String getSex()
	{
    
    
		return sex;
	}
	
	public String getName()
	{
    
    
		return name;
	}
	
	public void print()
	{
    
    
		System.out.println("id:"+id);
		System.out.println("Name:"+name);
		System.out.println("Sex:"+sex);
	}
	
	public void print1()
	{
    
    
		PA1 pa1=new PA1();
		pa1.print();
		PA2 pa2=new PA2();
		pa2.print();
	}
}

PB

package PackageA;

public class PB {
    
    
	public static void main(String[] args)
	{
    
    
		PA a=new PA(1,"张三");
		a.print();
		a.id=2;
		a.name="李四";
		System.out.println("id:"+a.getId());
		System.out.println("name:"+a.getName());
	}
}

运行结果

在这里插入图片描述

Test

package PackageB;

import PackageA.*;

public class TestProtected {
    
    
	public static void main(String[] args)
	{
    
    
		PA a=new PA(1,"张三");
		a.print();
		//a.id=2;
		//a.name="heih";
		//System.out.println("id="+a.getId());
		System.out.println("Name:"+a.getName());
	}
}

运行结果

在这里插入图片描述

二、方法的参数传递方式

示例

package PackageA;

public class Para {
    
    
	String value;
	public static void value(String a,String b,String c,String d)
	{
    
    
		a=a.concat(b);
		c=b;
		d=new String(a);
		System.out.println("改变变量值之后:a="+a+",b="+b+",c="+c+",d="+d);
	}
	
	public static void change(Para a,Para b,Para c,Para d)
	{
    
    
		a.value=a.value.concat(b.value);
		c.value=b.value;
		d.value=new String(a.value);
		System.out.println("改变变量值之后:a="+a+",b="+b+",c="+c+",d="+d);
	}
	
	@Override
	public String toString()
	{
    
    
		return value;
	}
	
	public static void main(String[] args)
	{
    
    
		String a,b,c,d;
		a="aaa";
		b="bbb";
		c="ccc";
		d="ddd";
		System.out.println("调用value之前:a="+a+",b="+b+",c="+c+",d="+d);
		value(a,b,c,d);
		System.out.println("调用value之后:a="+a+",b="+b+",c="+c+",d="+d);
		Para a1,b1,c1,d1;
		a1=new Para();
		b1=new Para();
		c1=new Para();
		d1=new Para();
		a1.value="aaaa";
		b1.value="bbbb";
		c1.value="cccc";
		d1.value="dddd";
		System.out.println("调用change之前:a1="+a1+",b1="+b1+",c1="+c1+",d1="+d1);
		change(a1,b1,c1,d1);
		System.out.println("调用change之后:a1="+a1+",b1="+b1+",c1="+c1+",d1="+d1);
	}
}

运行结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41563270/article/details/108780625