访问控制

可以对Java类中定义的属性方法进行访问控制----规定不同的保护等级: public、protected、default、private

//仅在类的内部可以访问.
private String email;
//在同一个包内该属性可以被访问.
String major;
//在子类中该属性可以被访问, 且该子类可以跨包
protected int salary;
//访问权限最高, 无论是否在一个包内, 无论是否是子类都可以被访问.
public String name;

访问控制举例(1)

class Parent {
  private int f1 = 1;
  int f2 = 2;
  protected int f3 = 3;
  public int f4 = 4;
  private void fm1() {
    System.out.println("in fm1() f1=" + f1);
  }
  void fm2() {
    System.out.println("in fm2() f2=" + f2);
  }
  protected void fm3() {
    System.out.println("in fm3() f3=" + f3);
  }
  public void fm4() {
    System.out.println("in fm4() f4=" + f4);
  }
}

访问控制举例(2)

class Child extends Parent { //设父类和子类在同一个包内
  private int c1 = 21;
  public int c2 = 22;
  private void cm1() {
    System.out.println("in cm1() c1=" + c1);
  }
  public void cm2() {
   System.out.println("in cm2() c2=" + c2);
  }
  public static void main(String args[]) {
    int i;
    Parent p = new Parent();
    i = p.f2;   // i = p.f3; i = p.f4;
    p.fm2();   // p.fm3(); p.fm4();
    Child c = new Child();
    i = c.f2;   // i = c.f3; i = c.f4;
    i = c.c1;   // i = c.c2;
    c.cm1();   // c.cm2(); c.fm2(); c.fm3(); c.fm4()
  }
}

访问控制分析
父类Parent和子类Child在同一包中定义时:

Java类的设计----访问控制的更多相关文章

  1. Java类的设计----Object 类

    Object类 Object类是所有Java类的根父类如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object类 public class Person { ... } 等价于: ...

  2. Java类的设计----关键字super

    关键字super 在Java类中使用super来引用父类的成分 super可用于访问父类中定义的属性 super可用于调用父类中定义的成员方法 super可用于在子类构造方法中调用父类的构造方法 su ...

  3. Java类的设计----多态性及其应用

    多态性及其应用 多态性 多态—在Java中,子类的对象可以替代父类的对象使用一个变量只能有一种确定的数据类型一个引用类型变量可能指向(引用)多种不同类型的对象 Person p = new Stude ...

  4. java类的设计原则

    1.内聚性 类应该描述一个单一的实体,所有的类操作应该在逻辑上相互配合,支持一个连贯性的目标.例如:学生和教职工属于不同的实体,应该定义两个类. 2.一致性 要遵循一定的设计风格和命名习惯.给类.方法 ...

  5. Java类的设计----方法的重写、覆盖

    方法的重写.覆盖 在子类中可以根据需要对从父类中继承来的方法进行改造—覆盖方法(方法的重置.重写),在程序执行时,子类的方法将覆盖父类的方法. 覆盖方法必须和被覆盖方法具有相同的方法名称.参数列表和返 ...

  6. java类和对象的基础(笔记)

    在Java类的设计中,有时希望一个类在任何时候只能有一个实例.这时可以将该类设计为单例模式(singleton).要将一个类设计为单例模式,需要把类的构造方法的访问修饰符声明为private,然后在类 ...

  7. Java 类的热替换 —— 概念、设计与实现

    详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp71   Java 类的热替换 -- 概念.设计与实现 构建基于 Java ...

  8. Java SE 之 数据库操作工具类(DBUtil)设计

    JDBC创建数据库基本连接 //1.加载驱动程序 Class.forName(driveName); //2.获得数据库连接 Connection connection = DriverManager ...

  9. Java类成员访问控制权限

    类成员访问控制权限 在JAVA中有四种访问控制权限,分别为:private, default, protected, public 1.Private 如果一个成员方法或变量名前使用了private, ...

随机推荐

  1. taglib的uri问题

    最开始我在代码中看到这样的代码(运行正常): <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/fu ...

  2. Python中的相对文件路径的调用

    先让我们来看看一个用到相对文件路径的函数调用的问题.假设现在有两个脚本文件main.py和func.py,他们的路径关系是: . |--dir1 |--main.py |--dir2 |--func. ...

  3. python 实现ARP攻击

    注:使用这个脚本需要安装scapy 包 最好在linux平台下使用,因为scapy包在windows上安装老是会有各种问题 #coding:utf-8 #example :sudo python ar ...

  4. 【C#/WPF】Image图片的Transform变换:平移、缩放、旋转

    WPF中图像控件Image的变换属性Transform: 平移 缩放 旋转 即要想实现图片的平移.缩放.旋转,是修改它所在的Image控件的Transform变换属性. 下面在XAML中定义了Imag ...

  5. 【C#】BackgroundWorker类传递参数

    要传递多个不同类型的参数: private void Test(){ int a = 123; string b = "456"; bool c = true; Backgroun ...

  6. 【Qt Tips】QLineEdit内容过滤之setValidator和setInputMask浅析

    1.QValidator分析 2.InputMask格式 3.测试代码和用例 项目路径: GitHub: https://github.com/Qunero/NeoQtTestDemo/tree/ma ...

  7. Hive Tunning(二)优化存储

    接着上一章我们讲的hive的连接策略,现在我们讲一下hive的数据存储. 下面是hive支持的数据存储格式,有我们常见的文本,JSON,XML,这里我们主要讲一下ORCFile. Built-in F ...

  8. linux大小写转换

    [root@ob2 mytmp]# cat aa2.txt|sed 's#[a-z]#\u&#g'ETH0      LINK ENCAP:ETHERNET  HWADDR 00:0C:29: ...

  9. PixelMatorPro快捷键大全(osx)

    Keyboard Shortcuts Navigate an image   Zoom in Command-Plus (+) Zoom out Command-Minus (-) Zoom to f ...

  10. easyui中datagrid用法,加载table数据与标题

    加载标题写法: 多行标题:columns: [[ columns: [[                       { field: 'itemid', title: 'Item ID', rows ...