封装,是面向对象三大特征之一。它指的是将对象的状态信息隐藏在对象内部,不允许其他累直接访问,带有隐私权的概念。假如其他类要访问一个类的私有属性,只能通过它对外开放的方法是才合法的,否则都是违法,不允许放行的。
因为封装,于是出现了访问控制符的出现,他们分别是private、默认无修饰符(default)、protected、public 四种,下面分别介绍下它们:
private: 译意是“私有的”。被private修饰的属性或者方法是几乎被类完全占有,它只能在定义它的类里使用,如果外界需要访问,那么可以通过类对外开放的方法。
default:没有使用任何访问控制符,就称它是默认访问控制(和friendly是不同时期的同一产物)。它的最高限制在同个包里,即被default修饰的属性只能被同个包里的其它类访问,当然可以在定义它的类里被访问。
protected:译意是“被保护的”。它又高一级 -- 子类访问权限,即继承这个类的子类不管跟父类有没有在同个包,都可以访问被protected修饰的成员。同理,同个包中,同个类中也可以被访问咯。
public: 译意是“公共的”。 这是最宽松的访问控制级别。只要一个类在其它类能生产实例,那么该实例就可以毫无阻碍的访问任何被public修饰的成员。
小结如下表
代码如下:
package encapsulation;
/**************************************************
*
* @author: 瘋叻ハ.兩
* @create-time: 2011-5-29 下午09:37:32
* @revision: 1.0
* @purpose: 模拟同个包内的访问情况
*
***************************************************/
class T{
private String name;
public int age;
private T(){
}
T(String name){
this.getName(name);
}
private void getName(String name){
// 用传入的参数赋值给私有属性name
this.name = name;
// 在同个类里访问私有属性;前面并没有提到this的使用说明,这里小注下,它可以简单理解成类的实例的替身
System.out.println("名称是:"+this.name);
}
// default修饰的方法
void say(){
System.out.println("My Name is "+this.name);
}
}
public class TestVisit {
public static void main(String[] arg){
// new T(); 无参构造是私有的,只能在本类中调用,比如T类在构造方法调用自己的私有方法
// 有参构造不是私有的,可以同包类之间调用
T t = new T("pirates");
// 根据上行的,t不能调用私有的getName方法及name属性
//t.getName();
// 但是可以使用默认的方法
t.say();
}
}
运行结果:
名称是:pirates
My Name is pirates
结果分析:如果还不清楚结果的原因,可以自行阅读“Java起航 ---- 方法”一文中关于方法传递引用变量的思想,在此就不解释了
既已提到封装的概念,顺便分享下我找到解释为什么Java的代码会有 public static void main(String[] args){ }
jvm在试图运行一个类之前,先检查该类是否包含一个特殊方法。
1、这个方法必须是公有的,以便在任何位置都能访问得到。
2、这个方法必须是static的,因为这个方法不能依赖任何该类的实例即可运行,而非static的方法,在运行之前要先创建该类的实例对象。
3、这个方法没有返回值。和C/C++程序不一样,java的程序默认都以常态结束,所以main不需要返回值。如果要以非常态结束程序,可以用System.exit(1)。
4、这个方法必须可以接受数目不定的String类型的参数,最早并没有JavaIDE工具,方便运行者可能要附加运行参数。
如java HelloWorld jack 100,这里的jack和100就是运行参数。
为什么是String呢?因为String具有普遍性。任何字面形式都可以解释成String,而其他类型则不然(如jack就不能解释成整数或浮点数),所以用String来存储参数最合适。
而因为参数数目不限一个,所以用了数组,即String[]。在Java 1.5以后,还可以写成String...,表示数目不定。
至于参数的变量名可以任意,只要保证在方法内部按该变量名来获得参数就行了,从变量的作用角度来说,叫arguments或args当然是最合适的。
至于这个方法的名字为什么一定是main,有历史原因,因为最早的C以main函数作为程序入口,java沿用了这个历史传统。
在此谢谢作者...Dan1980
- 大小: 29 KB
分享到:
相关推荐
在Java编程语言中,面向对象特性是其核心概念之一,本资料主要讲解了JavaSE进阶中的面向对象相关知识,包括final关键字、抽象类、接口、抽象类与接口的区别、Object类、package和import以及访问权限控制。...
《程序员编程指南》是一份全面涵盖Java、Spring和SpringBoot等技术的基础到进阶的知识宝典,特别适合希望深入理解并提升技能的开发者。这份资料不仅包含基础编程概念,还涉及高级特性和源码分析,旨在帮助程序员在...
**Java进阶篇主要内容概述** 本PPT详细阐述了Java进阶学习的关键概念和技术,旨在帮助读者深化对Java编程的理解,提升开发技能。这个资料涵盖了不仅限于教科书的知识,确保你能够掌握到实际工作中可能遇到的实用...
《Java进阶100例》是一本专为Java初学者设计的学习教程,旨在帮助从零开始的人系统地掌握Java编程技术。这个压缩包包含了"编程实践:Java进阶100例.pdf"这一核心资料,它将通过一系列具体实例,深入浅出地讲解Java...
Struts 是一个经典的Java Web开发框架,主要用于构建基于MVC(Model-View-Controller)模式的应用程序。在本文中,我们将深入探讨Struts高级实战进阶的一些关键知识点,包括MVC模式、Struts请求处理时序图、Struts的...
Educoder题目:Java面向对象 - 封装、继承和多态答案解析
### Java进阶知识 #### 1. 异常处理 Java提供了强大的异常处理机制,通过try-catch-finally结构来捕获和处理程序运行时可能发生的错误。 #### 2. 多线程 - **线程概念**:线程是进程中的一个执行单元,是操作系统...
这部分内容会详细介绍类的创建、对象的实例化、继承、封装和多态性等概念。Scala的特质(Trait)也会在这里提及,它是实现多重继承和行为混合的关键机制。 第三部分:"Scala入门及进阶-part03-高级特性.pdf" 将深入...
### Java进阶之路:程序员成长的关键阶段与学习策略 在IT行业中,Java作为一种广泛使用的编程语言,不仅是初学者的首选,也是资深开发者的长期伙伴。本文将深入探讨Java程序员成长的三个关键阶段——初级阶段、中级...
以下是一些Java进阶编程中常见的知识点: 1. 面向对象的高级特性:包括继承、封装、多态的深入理解,以及抽象类和接口的使用,泛型编程,注解以及反射机制。 2. Java集合框架:深入学习List、Set、Map等集合接口的...
### Java进阶知识点总结 #### 一、面向对象思想特点 面向对象编程(OOP)是一种程序设计范式,它的核心思想在于将现实世界中的事物抽象为对象,通过对象的组合来构建复杂的系统。 1. **面向对象的特点**: - **更...
Java进阶主要涉及深入理解Java语言的特性、高级编程技术、以及如何利用Java进行更复杂的项目开发。这包括但不限于理解Java的面向对象编程范式、跨平台性、高性能实现、分布式系统开发、动态性、多线程编程、安全性、...
Java是一种广泛使用的面向对象编程(OOP)语言,其核心原则包括封装、继承、多态和抽象。封装是将数据和操作数据的方法捆绑在一起,保护数据不受外部非法访问。继承允许一个类(子类)继承另一个类(父类)的属性和...
面向对象编程(OOP)基于类和对象的概念,允许我们通过封装、继承和多态性来组织和管理代码。以下是一些关于Java面向对象的基础知识: 1. **final关键字**: - `final`关键字用于创建不可变的对象,它可以用来修饰...
在Java进阶编程的学习过程中,我们经常会遇到一系列深入的话题,这些话题旨在提升程序员的技能,使其能够更好地理解和应用Java语言。以下是一些重要的Java进阶编程知识点,它们涵盖了多个方面,包括面向对象、多线程...
"Java语言程序设计 基础篇+进阶篇课后习题"提供了这样的机会,让我们可以系统地学习并掌握这门强大的编程语言。 基础篇通常涵盖Java的基本语法、数据类型、控制结构、类与对象、数组和字符串等核心概念。课后习题...
### Java进阶路线详解 #### 一、Java基础 **1. 传值与传引用** 在Java中,基本类型(如int、char等)的传递是按值传递的,而对象类型的传递则是按引用传递的。理解这一点对于正确处理变量和对象之间的交互至关...
本资源摘要信息主要介绍 Java 面向对象(进阶)- 拼电商客户管理系统的设计和实现,涵盖了面向对象编程的主要知识点,包括类结构的使用、对象的创建与使用、类的封装性、数组的插入、删除和替换、关键字的使用等。...
本课程“Java进阶高手课-深入浅出Java网络编程”旨在帮助开发者深入理解这一关键技能,通过实战项目提升Java在网络应用中的性能。 首先,我们要了解Java网络编程的基础,这包括TCP/IP协议栈、套接字(Socket)编程...
2. **包结构设计**(109-第3章_19-netty进阶-聊天业务-包结构-480P 清晰-AVC.Cover.jpg):在聊天应用中,数据通常被封装成特定格式的包进行传输。Netty支持自定义编解码器来解析这些包,比如定义头部信息来识别消息...