java封装学习

封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。把过程和数据包围起来,对数据的访问只能通过已定义的接口。

在java中通过关键字private实现封装。

需要用特定的方法来进行属性的读写:getter setter

首先了解未封装的函数容易被其他类改变其属性值。

1 public class Test {
2      String name="张三";            //参量没有用private修饰
3     public void ss(){  //获取属性值
4         System.out.println(name);
5     }
6 }
1 public class Test2 {
2     public static void main(String[] args){
3         Test test=new Test();
4         test.name="李四";
5         test.ss();
6     }
7 }

运行显示结果为:

李四

说明属性值已经被Test2改变

如果将Test类中的name属性加上private修饰

编译环境报错,说明该属性不能被本类以外的类调用。

那封装之后的类通过什么方法来改便其属性值呢?

答案就是setter和getter

 1 public class Test {
 2    private  String name="张三";            //参量用private修饰
 3     public void ss(){  //获取属性值
 4         System.out.println(name);
 5     }
 6     public String getName(){
 7         return name;
 8     }
 9     public void setName(String newName){
10         name=newName;
11     }
12 }
1 public class Test2 {
2     public static void main(String[] args){
3         Test test=new Test();
4         test.setName("李四");
5         System.out.println("名字为:"+test.getName());
6         test.getName();
7     }
8 }

显示结果为:

名字为:李四

时间: 2024-11-03 20:53:57

java封装学习的相关文章

java排序学习笔记

前面写了js的排序实现,总得玩玩java的哈. 同样,冒泡.选择.快速(这三个之前实现过也写过文章).堆排序,然后做比较. 主要遇到的难点: - -||想轻松点写个封装计时的逻辑,不想每调用一个排序就要写一个计时代码.想想,还是javascript写起来方便: java的话,我想到的方法是写一个抽象类:抽象出排序方法,实现一个排序计时方法(该方法调用了抽象排序,但在先后排序时加入计时代码[感觉像是aop操作]): 接着所有排序类都继承这个抽象类,并实现排序方法,调用的时候直接调用继承的排序计时方

java基础学习总结(一)

经过了半个月时间的学习,对java这门语言也有了比以前更深刻的认识,取经之路还相当漫长,希望通过即时的总结了解自己学习的状况. 近期基本上都是学习的java的一些基本语法,比如数据类型.运算符.程序流程控制.数组,也在逐渐上升到面向对象编程这一概念. 而java最核心的核心就是面向对象思想,只要能够掌握好面向对象这一核心概念,基本上java的学习就算入门了. java所有的对象都存在于它所属的类.而每个类都有它自身的属性和方法,我们通过对对象的属性和方法的归纳将特定的对象归为一类.我们只需要建立

java JDK8 学习笔记——第16章 整合数据库

第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程序. 2.JDBC标准主要分为两个部分:JDBC应用程序开发者接口和JDBC驱动程序开发者接口.应用程序需要联机数据库,其相关API主要在java.sql和javax.sql两个包中. 3.应用程序使用JDBC联机数据库的通用语法: Connection conn = DriverManager.g

java基础学习——对面向对象的重识

最近几天在看java的视频,感觉很多东西java语法上很像c#,但是还是有很多内容惊到我: 1,java虚拟机 用过VMWar或者VirtualBox的童鞋都对"虚拟机"这个词有个大致的了解,虚拟机提供了个虚拟的平台,让我们可以模拟一些脱离硬件的环境.java里的虚拟机起到了一个类似以前学过的ODBC驱动程序的作用,它屏蔽了底层的差异,让操作系统通过虚拟机向下面看去,操作系统的感觉都是一样的. 有了这一层东西,我们彻底解开了底层硬件和运行操作系统之间的耦合,实现了一次编译,到处运行的梦

Java封装自己的Api

转自:http://www.2cto.com/kf/201404/291555.html 随着学习的深入,我们都想封装自己的Api,但对于新手这并不是一件简单容易的事! 我要达到的效果:自己封装一些方法,导出jar包,其他项目里加入它即可,并且,会有注释信息! 1.封装自己的Api,这一步很简单,自己写就好了! 2.导出javadoc,这一步也很简单:export.java.javadoc,在javadoc command里选择:C:\Program Files\Java\jdk1.7.0_45

java多线程学习(2)

1)Callable和Future Runnable封装一个异步运行的任务:可以当成一个没有任何参数和返回值的异步方法,Callable和 Runnable类似,但是它有返回值和参数. Callable接口是一个参数化的类型,只有一个方法call. 1 public interface Callable<V> 2 3 { 4 5 V call()throws Exception; 6 7 } 类型参数v是指返回值的类型,例如Callable<Integer>代表最终返回一个Inte

JAVA Web学习篇--Servlet

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

Java IO学习笔记:概念与原理

Java IO学习笔记:概念与原理 一.概念 Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了流,然后将这些流还可以写到另外的目的地(文件.内存.控制台.网络),之所以称为流,是因为这个数据序列在不同时刻所操作的是源的不同部分. 二.分类 流的分类,Java的流分类比较丰富,刚接触的人看了后会感觉很晕.流分类的方式很多: 1.按照输入的方向分,输入流和输出流,输入输出的参照对象是Java程序. 2.

java多线程学习--java.util.concurrent

CountDownLatch,api 文档:http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes. 假设我们要打印1-100,最