JAVA的访问权限控制符以及面向对象的三大特性

本文介绍了Java中的访问权限修饰符,包括包访问权限、public、protected和private的详细解释,并通过代码示例展示了它们的使用。同时,简述了面向对象的三大特性——封装、继承和多态,探讨了它们在实际编程中的作用和意义。
摘要由CSDN通过智能技术生成


前言

小哦在这篇文章中主要内容是访问权限修饰符,和简要的说写一下面向对象的三大特性。

本来我在写这篇文章的时候,想着只把访问权限修饰符写了吧,但是我在看书的时候发现里面提到了继承这个概念,于是我就决定把面向对象的三大特性和访问权限修饰符一起写了。希望在看的时候不要太晕。

在这里插入图片描述


一、访问权限修饰符

在这里插入图片描述

1.包访问权限

我们写的所有示例中没有使用访问修饰符修饰的 类,方法,属性 就是拥有包访问权限也叫默认访问权限。从字面意思上,我们可以理解包访问权限修饰的 类,方法,属性 只允许在同一个包内的所有类去访问,但是对于包之外的所有类都是无法访问的。

2.public访问权限

一个成员被public修饰。这个成员无论在哪,无论是谁,都可以访问该成员。

3.protected:继承访问权限

protected 允许子类或者同一个包的类访问。什么是子类?面向对象的三大特性——继承会提到。当基类(父类)的创建者希望有某个特定的成员,把对它的访问权限赋予派生类(子类)而不是所有的类。这就需要用到protected来完成这一工作。

4.private:不允许你访问

private修饰的所有成员,除了包含该成员的类之外,其他任何类都不允许访问这个成员。等同于将自己封闭起来,这样做的目的是在开发的时候,无论我如何的去修该成员都不会影响到包内的其他类。

5.代码示例

package com.tuio.demo6;

public class Test01 {
	
	public Test01() {
		System.out.println("public修饰的Test01的无参构造方法");
	}
	
	void type() {	//default(包访问权限)修饰的方法
		System.out.println("Test01下的包访问权限的方法 type()");
	}
}
package com.tuio.demo6;

public class Test01_1 {

	public static void main(String[] args) {
		Test01 t01 = new Test01();
		t01.type();
	}
}
package com.tuio.demo6.child;

import com.tuio.demo6.Test01;

public class Test01_01 {

	public static void main(String[] args) {
		Test01 t01 = new Test01();
		//t01.type();	
		//The method type() from the type Test01 is not visible
	}

}

通过上面的三个类我们可以发现:下面的两个类都可以去访问public修饰的构造方法,但是在不同包下的类却不能访问Test01类中的被包访问权限修饰的type()方法如果强行访问会出现错误:The method type() from the type Test01 is not visible(意思是Test01类中的type()是不可见的),同理将访问权限变成protected,访问它的类在它的访问权限之外,也是如此,如果变成private那么这个方法将变成除Test01类之外任何类都无法访问。

二、面向对象的三大特性

1.前言

在这里我只是简单的说明了一下面向对象的三大特性,后面我将分几篇重点说一下面向对象的三大特性。

2.封装

从概念上来讲:是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想。
这在我们生活中也很常见,比如:我们开车的时候只需要上车、打火、挂挡、踩油门(调用这些方法)就可以使车子行驶。而我们无需知道车的原理。
什么是封装?
将信息隐蔽的过程称为封装。封装的本质就是对访问权限的控制,一般对象的数据只能够通过内部方法来访问,而无法直接被访问。从而,从一定意义上保证了数据的安全。

3.继承

主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展
在Java中使用extends关键字来继承一个类。每一个类都是其他类的子类,默认是Object类的子类。子类自动继承父类中的成员变量和成员方法。

4.多态

指在一个类中定义的属性和方法被其它类继承后,它们可以具有不同的数据类型或表现出不同的行为

package com.tuio.demo6;

public class Test02 {
	public static void main(String[] args) {
		Object o1 = 1;
		Object o2 = 1.26;
		Object o3 = 'a';
		Object o4 = "abc";
		Object o5 = true;
		Object o6 = new One("tuio");
		System.out.println("o1 = " + o1);	//o1 = 1
		System.out.println("o2 = " + o2);	//o2 = 1.26
		System.out.println("o3 = " + o3);	//o3 = a
		System.out.println("o4 = " + o4);	//o4 = abc
		System.out.println("o5 = " + o5);	//o5 = true
		System.out.println("o6 = " + o6);	//o6 = One [name = tuio]
	}
}
class One{
	String name;
	public One(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "One [name = " + name + "]";
	}
	
}

通过Object方法我们可以将不同的数据类型全部输出到控制台上,这个就是多态的一个体现

总结

好了,小哦在这里主要是简单的说明了Java的访问权限控制符以及面向对象的三大特性,由于面向对象的三大特性里面的内容比较多,所以我只是在这里简单提及一下,在后面我将会详细的说明面向对象的三大特性。

如果有喜欢小哦的同学可以点一点关注。我们一起学习,一起进步,如果哪里有不对的地方,或者不懂的都可以私信我呦!

参考文献:《Java编程思想》(Thinking in Java)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忒哦想学计算机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值