`
瘋叻ハ.兩
  • 浏览: 82356 次
  • 性别: Icon_minigender_1
  • 来自: 宁德
社区版块
存档分类
最新评论

Java进阶 ---- 封装

阅读更多

      封装,是面向对象三大特征之一。它指的是将对象的状态信息隐藏在对象内部,不允许其他累直接访问,带有隐私权的概念。假如其他类要访问一个类的私有属性,只能通过它对外开放的方法是才合法的,否则都是违法,不允许放行的。

      因为封装,于是出现了访问控制符的出现,他们分别是private默认无修饰符(default)、protectedpublic 四种,下面分别介绍下它们:

        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
0
0
分享到:
评论

相关推荐

    JavaSE进阶-01-面向对象.pdf

    在Java编程语言中,面向对象特性是其核心概念之一,本资料主要讲解了JavaSE进阶中的面向对象相关知识,包括final关键字、抽象类、接口、抽象类与接口的区别、Object类、package和import以及访问权限控制。...

    程序员编程指南 - Java、Spring、SpringBoot等等基础-进阶-源码知识点 & 面试宝典 - 建议使用Obsi

    《程序员编程指南》是一份全面涵盖Java、Spring和SpringBoot等技术的基础到进阶的知识宝典,特别适合希望深入理解并提升技能的开发者。这份资料不仅包含基础编程概念,还涉及高级特性和源码分析,旨在帮助程序员在...

    java进阶篇主要内容的PPT

    **Java进阶篇主要内容概述** 本PPT详细阐述了Java进阶学习的关键概念和技术,旨在帮助读者深化对Java编程的理解,提升开发技能。这个资料涵盖了不仅限于教科书的知识,确保你能够掌握到实际工作中可能遇到的实用...

    Java进阶100例

    《Java进阶100例》是一本专为Java初学者设计的学习教程,旨在帮助从零开始的人系统地掌握Java编程技术。这个压缩包包含了"编程实践:Java进阶100例.pdf"这一核心资料,它将通过一系列具体实例,深入浅出地讲解Java...

    struts高级实战进阶-传智播客

    Struts 是一个经典的Java Web开发框架,主要用于构建基于MVC(Model-View-Controller)模式的应用程序。在本文中,我们将深入探讨Struts高级实战进阶的一些关键知识点,包括MVC模式、Struts请求处理时序图、Struts的...

    Educoder题目:Java面向对象 - 封装、继承和多态答案解析.md

    Educoder题目:Java面向对象 - 封装、继承和多态答案解析

    2019最新java视频教程从基础到进阶到精通

    ### Java进阶知识 #### 1. 异常处理 Java提供了强大的异常处理机制,通过try-catch-finally结构来捕获和处理程序运行时可能发生的错误。 #### 2. 多线程 - **线程概念**:线程是进程中的一个执行单元,是操作系统...

    scala讲解笔记 入门及进阶 PDF文档1-5

    这部分内容会详细介绍类的创建、对象的实例化、继承、封装和多态性等概念。Scala的特质(Trait)也会在这里提及,它是实现多重继承和行为混合的关键机制。 第三部分:"Scala入门及进阶-part03-高级特性.pdf" 将深入...

    java进阶之路 。。

    ### Java进阶之路:程序员成长的关键阶段与学习策略 在IT行业中,Java作为一种广泛使用的编程语言,不仅是初学者的首选,也是资深开发者的长期伙伴。本文将深入探讨Java程序员成长的三个关键阶段——初级阶段、中级...

    Java语言程序设计-进阶篇-原书第8版

    以下是一些Java进阶编程中常见的知识点: 1. 面向对象的高级特性:包括继承、封装、多态的深入理解,以及抽象类和接口的使用,泛型编程,注解以及反射机制。 2. Java集合框架:深入学习List、Set、Map等集合接口的...

    Java进阶知识点总结

    ### Java进阶知识点总结 #### 一、面向对象思想特点 面向对象编程(OOP)是一种程序设计范式,它的核心思想在于将现实世界中的事物抽象为对象,通过对象的组合来构建复杂的系统。 1. **面向对象的特点**: - **更...

    JAVA进阶及案列教学.zip

    Java进阶主要涉及深入理解Java语言的特性、高级编程技术、以及如何利用Java进行更复杂的项目开发。这包括但不限于理解Java的面向对象编程范式、跨平台性、高性能实现、分布式系统开发、动态性、多线程编程、安全性、...

    java经典面试题目-面经-java-Java语言的进阶概念-常用的库和框架-并发编程-网络编程-Web开发-面经

    Java是一种广泛使用的面向对象编程(OOP)语言,其核心原则包括封装、继承、多态和抽象。封装是将数据和操作数据的方法捆绑在一起,保护数据不受外部非法访问。继承允许一个类(子类)继承另一个类(父类)的属性和...

    2020老杜最新版Java零基础进阶视频教程-面向对象课件

    面向对象编程(OOP)基于类和对象的概念,允许我们通过封装、继承和多态性来组织和管理代码。以下是一些关于Java面向对象的基础知识: 1. **final关键字**: - `final`关键字用于创建不可变的对象,它可以用来修饰...

    Java进阶编程(经典网帖合集)

    在Java进阶编程的学习过程中,我们经常会遇到一系列深入的话题,这些话题旨在提升程序员的技能,使其能够更好地理解和应用Java语言。以下是一些重要的Java进阶编程知识点,它们涵盖了多个方面,包括面向对象、多线程...

    java语言程序设计 基础篇+进阶篇课后习题

    "Java语言程序设计 基础篇+进阶篇课后习题"提供了这样的机会,让我们可以系统地学习并掌握这门强大的编程语言。 基础篇通常涵盖Java的基本语法、数据类型、控制结构、类与对象、数组和字符串等核心概念。课后习题...

    Java进阶路线

    ### Java进阶路线详解 #### 一、Java基础 **1. 传值与传引用** 在Java中,基本类型(如int、char等)的传递是按值传递的,而对象类型的传递则是按引用传递的。理解这一点对于正确处理变量和对象之间的交互至关...

    Java面向对象(进阶)- 拼电商客户管理系统

    本资源摘要信息主要介绍 Java 面向对象(进阶)- 拼电商客户管理系统的设计和实现,涵盖了面向对象编程的主要知识点,包括类结构的使用、对象的创建与使用、类的封装性、数组的插入、删除和替换、关键字的使用等。...

    Java进阶高手课-深入浅出Java网络编程

    本课程“Java进阶高手课-深入浅出Java网络编程”旨在帮助开发者深入理解这一关键技能,通过实战项目提升Java在网络应用中的性能。 首先,我们要了解Java网络编程的基础,这包括TCP/IP协议栈、套接字(Socket)编程...

    聊天室业务011111111111

    2. **包结构设计**(109-第3章_19-netty进阶-聊天业务-包结构-480P 清晰-AVC.Cover.jpg):在聊天应用中,数据通常被封装成特定格式的包进行传输。Netty支持自定义编解码器来解析这些包,比如定义头部信息来识别消息...

Global site tag (gtag.js) - Google Analytics