Notas de estudio de entrada de Java (6): modificadores de acceso, paso de parámetros de método

Uno, modificador de permiso de acceso

1. Modificación de atributos y métodos

Dentro de la clase Dentro de la bolsa Subclase Paquete externo
defecto
público
privado
protegido

2. Modificación

Dentro de la clase Dentro de la bolsa Subclase Paquete externo
defecto
público
privado
protegido

Algunos fragmentos de conocimiento

  1. La clase modificada por privado y protegido debe ser una clase interna. Para clases definidas de forma independiente, generalmente no se puede definir como privado o protegido
  2. Solo se puede acceder a las clases internas dentro de la clase donde están definidas
  3. La clase interior no se puede utilizar como superclase
  4. Una clase sin ninguna modificación se llama clase amiga
  5. Al crear objetos usando clases amigables en otra clase, debe asegurarse de que estén en el mismo paquete

Ejercicio

Inserte la descripción de la imagen aquí

Pensilvania

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());
	}
}

resultado de la operación

Inserte la descripción de la imagen aquí

Prueba

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());
	}
}

resultado de la operación

Inserte la descripción de la imagen aquí

En segundo lugar, el método de transferencia de parámetros.

Ejemplo

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);
	}
}

resultado de la operación

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_41563270/article/details/108780625
Recomendado
Clasificación