文章目录
前言
小哦在这篇文章中主要内容是访问权限修饰符,和简要的说写一下面向对象的三大特性。
本来我在写这篇文章的时候,想着只把访问权限修饰符写了吧,但是我在看书的时候发现里面提到了继承这个概念,于是我就决定把面向对象的三大特性和访问权限修饰符一起写了。希望在看的时候不要太晕。
一、访问权限修饰符
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)