Java基础学习篇---------封装

一、Java中的内部类

  1.Java中成员内部类

  (1).内部类的方法可以直接访问外部类的类中的数据,而不受访问控制符的影响,如直接访问 Outer 类中的私有属性

  (2)定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象

  即:内部类 对象名 = 外部类对象.new 内部类( );

  (3).外部类是不能直接使用内部类的成员和方法,可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。

  (4).如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法

     如果要访问外部类的成员变量,可以使用 外部类的对象.this 关键字

      public class HelloWorld{
      //外部类的私有属性name
      private String name = "imooc";
      //外部类的成员属性
      int age = 20;
      //成员内部类Inner
      public class Inner {
      String name = "爱慕课";
      //内部类中的方法
      public void show() {
      System.out.println("外部类中的name:" + HelloWorld.this.name);
      System.out.println("内部类中的name:" + name);        //默认为内部类成员变量
      System.out.println("外部类中的age:" + age);
    }
  }  
      //测试成员内部类
      public static void main(String[] args) {
      //创建外部类的对象  
      HelloWorld o = new HelloWorld ();
      //创建内部类的对象
      Inner inn = o.new Inner();
      //调用内部类对象的show方法
      inn.show();
    }
  }

  2.Java中静态内部类

  (1).静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问

  (2).如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员

  (3).创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类()

public class MyClass {

// 外部类中的静态变量score    private static int score = 84;    private int sum = 10;    // 创建静态内部类    public  static class SInner {        // 内部类中的变量score        int score = 91;

public void show() {            System.out.println("访问外部类中的score:" + MyClass.score);            System.out.println("访问内部类中的sum:" + new MyClass().sum);        }    }

// 测试静态内部类    public static void main(String[] args) {        // 直接创建内部类的对象        SInner si = new SInner();        // 调用show方法        si.show();    }}

3.Java 中的方法内部类  由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和static修饰符
public class MyClass {    private String name = "爱慕课";    // 外部类中的show方法    public void show() {        // 定义方法内部类        class MInner {            int score = 83;            public int getScore() {                return score + 10;            }        }

// 创建方法内部类的对象        MInner mi = new MInner();        // 调用内部类的方法        int newScore = mi.getScore();        System.out.println("姓名:" + name + "\n加分后的成绩:" + newScore);    }    // 测试方法内部类    public static void main(String[] args) {        // 创建外部类的对象        MyClass mo = new MyClass();        // 调用外部类的方法        mo.show();    }}
 
  

原文地址:https://www.cnblogs.com/liunx1109/p/9772903.html

时间: 2024-11-12 11:39:11

Java基础学习篇---------封装的相关文章

java基础学习篇01

从事了java2年开发,后来发现自己除了在网上抄袭代码之外就一无是处了,还没有在学校培训的时候那样子还愿意花时间去研究新技术,连最基础不常用的都快忘记了. 所以开始重新从最基础的开始回顾一遍,写一些博客来记录自己的学习过程. java基础语法 1.输出错误与调试信息 System类是一个用final修饰的一个类,不能被继承,没有子类.不能被实例化,因为构造方法是私有的. 包名:java.lang 帮助文档对包的描述是:提供对java编程语言的设计基础课. 全限定类名:java.lang.Obje

java基础学习篇02(数据类型转换和基本面试题)

JAVA基本数据类型转换 java中的数据类型,分为,引用数据类型和基本数据类型.基本数据类型有8中 整型:byte 8位 . short 16位 .int 32位 .long 64位. (8位=1个字节) 浮点型:float 32位 .double64位 字符类型:char Boolean型:boolean 自动类型转换 转换图 正方向是自动转换  反方向强制转换(char--->double的转换  和byte到 double的转换) char -->int-->long-->

Java基础学习篇---------String、集合的学习

一.String常用的方法: 二.集合学习 原文地址:https://www.cnblogs.com/liunx1109/p/9775588.html

JAVA Web学习篇--Servlet

Servlet由来 做过BS项目的人都知道,浏览器可以依据HTML静态标记语言来显示各式各样的网页.可是假设我们须要在网页上完毕一些业务逻辑:比方登陆验证.或者说网页显示的内容在server的数据库中.假设是这样,除了负责显示的HTML标记之外,必须还要有完毕这些业务功能的代码存在.这样的网页我们就叫做动态网页. 对于静态网页而言,server上存在的是一个个纯HTML文件.当client浏览器发出HTTP请求时,server能够依据请求的URL找到相应的HTML文件,并将HTML代码返回给cl

java基础学习总结——GUI编程(二)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——GUI编程(二) 一.事件监听 测试代码一: 1 package cn.javastudy.summary; 2 3 import java.awt.*; 4 import java.awt.event.*; 5 6 public class TestActionEvent { 7 public static void main(String args[]) { 8 Frame f = new Frame("

java基础学习总结——接口

java基础学习总结——接口 一.接口的概念 JAVA是只支持单继承的,但现实之中存在多重继承这种现象,如“金丝猴是一种动物”,金丝猴从动物这个类继承,同时“金丝猴是一种值钱的东西”,金丝猴从“值钱的东西”这个类继承,同时“金丝猴是一种应该受到保护的东西”,金丝猴从“应该受到保护的东西”这个类继承.这样金丝猴可以同时从 “动物类”.“值钱的东西类”.“应该受到保护的东西” 这三个类继承,但由于JAVA只支持单继承,因此金丝猴只能从这三个类中的一个来继承,不能同时继承这三个类.因此为了封装现实生活

java基础学习总结——流

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——流 一.JAVA流式输入/输出原理 流是用来读写数据的,java有一个类叫File,它封装的是文件的文件名,只是内存里面的一个对象,真正的文件是在硬盘上的一块空间,在这个文件里面存放着各种各样的数据,我们想读文件里面的数据怎么办呢?是通过一个流的方式来读,咱们要想从程序读数据,对于计算机来说,无论读什么类型的数据都是以010101101010这样的形式读取的.怎么把文件里面的数据读出来呢?你可以把文件想象成一

JAVA基础学习流程

JAVA基础学习: 第一步:学习JAVA的开发环境配置.开发第一个Java程序.也建议大家开始使用eclipse等IDE,不必纠结是不是一定要从记事本开始. 第二步:学习数据类型.运算符.变量.这是编程的基础,是程序的“砖块”.这些内容大多数编程语言都有,而且非常类似. 第三步:学习控制语句.这是编程的基础,是程序的“混凝土”.有了控制语句+变量,理论上你就可以写任意的程序了.因此,这是进入程序的门槛,需要大量的练习. 第四步:学习面向对象基础.通过类.对象.包等基本概念讲解.学习的时候,一定要

Java基础学习总结--多态

一.面向对象的三大特性:封装.继承.多态 ? 从一定角度来看,封装和继承几乎都是为多态而准备的. 二.什么是多态? ? 指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式.(发送消息就是函数调用) 三.实现多态的技术以及三个必要条件: ? 实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法. 三个必要条件: 继承 重写 父类引用指向子类对象 四.多态的作用.好处.类型