Java SE 029 访问控制符详解

(1)一个人只要自己不放弃自己,整个世界也不会放弃你.
(2)天生我才必有大用
(3)不能忍受学习之苦就一定要忍受生活之苦,这是多么痛苦而深刻的领悟.
(4)做难事必有所得
(5)精神乃真正的刀锋
(6)战胜对手有两次,第一次在内心中.
(7)编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~

Java SE 029 访问控制符详解

1.访问修饰符(access modifier)

解说:控制外面的类对里面的类的属性或方法能不能访问。控制权限的。

(1)public(公共的):被public所修饰的属性和方法可以被所有类访问。

(2)protected(受保护的):被protected所修饰的属性与方法可以在类内部、相同包、以及该类的子类所访问。

解说:如果这个类它的子类与当前这个类不在同一个包下面,子类也可以去访问父类的protected的属性与方法。

示例:

package com.test;

public class C
{
    
    
	protected int year = 2011;
}
package com.test.test1;

import com.test.C;

public class D extends C
{
    
    
	public void output(){
    
    		
		System.out.println(year);
	}

	public static void main(String [] args){
    
    
		D d = new D();
		d.output();
	}
}

运行结果:

在这里插入图片描述

注意:

(3)private(私有的): 被private所修饰的属性和方法只能在该类内部使用

(4)默认的(不加任何访问修饰符):在类内部以及相同包下面的类所使用。

示例:

package com;

public class A
{
    
    
	int a = 10;
}

package com.test;

import com.A;

public class B
{
    
    
	public static void main(String[] args){
    
    
		A a = new A();
		System.out.println(a.a);
	}
}

运行结果:

在这里插入图片描述

注意:

(1)所谓可以访问在子类中访问父类的属性与方法,实际上是子类把父类的protected的属性与方法给继承下来了,因此可以访问。

(2)可以被子类的使用,是指可以在子类的内部使用。而并非在子类里面去定义一个main方法,然后生成父类对象,然后通过父类对象去访问父类的protected成员变量,不是这样的。即可以被子类所继承下来。

(3)import导入是为了找到类,而访问修饰符是控制能不能访问类里面的属性与方法。

2.父类与子类属性与方法访问控制总结

(1)如果这个方法与属性是public的,即可以被子类所继承下来,子类可以访问父类的成员变量。子类在类的内部也可以去访问他。

(2)但是如果方法与属性是private的,子类就不会继承下来。也不会继承private的属性与方法。

(3)如果方法与属性是被protected所修饰的话,子类就可以把父类的protected的成员属性与方法一起继承过来,变成子类自己的。子类在内部也可以去访问它。

3.instanceof(谁的实例)

(1)判断某个对象是否是某个类的实例。

(2)语法形式
引用名 instanceof 类名 (接口名),返回一个boolean值。

(3)代码示例

public class InstanceofTest
{
    
    
	public static void main(String[] args)
	{
    
    
		People people = new People();
		System.out.println(people instanceof People);
	}
}

class People
{
    
    
}

public class InstanceofTest
{
    
    
	public static void main(String[] args)
	{
    
    
		People people = new Man();
		System.out.println(people instanceof People);
	}
}

class People
{
    
    
}

class Man extends People
{
    
    
}

结果为true,因为Man是People的子类,根据继承,子类就是父类,因此people也可以看作是People的实例。

猜你喜欢

转载自blog.csdn.net/xiogjie_67/article/details/108475760