java的三大特性,封装,继承,多态

封装 

Java代码  收藏代码
  1. /** 
  2.  * 所谓封装,就是将对象具有的成员变量和成员函数包装和隐藏起来,让外界无法直接使用, 
  3.  * 被封装的成员只能通过某些特定的方式才能访问。  
  4.  * 实现封装有两个步骤: 
  5.  *   1、将不能暴露的成员隐藏起来,我们就不能让其在类的外部被直接访问或赋值。 
  6.  *      实现方法是将该成员定义为私有的,在成员定义前加上private访问权限修饰符。 
  7.  *   2、用公共方法来暴露对该隐藏成员的访问,可以给成员加上public修饰符,将该成员定义为公共的 
  8.  */  
  9. package com.study.feature;  
  10.   
  11. /**    
  12.  *  
  13.  * @className :Package   
  14.  * @package : com.study.feature  
  15.  * @Description :封装性的测试    
  16.  * @author:lgf    
  17.  * @date :2012 三月 12  10:20:35           
  18.  * @version : 1.0 
  19.  */  
  20. public class Package {  
  21.     // 使用private隐藏  
  22.     private String strValue;  
  23.   
  24.     // 通过get和set进行访问  
  25.     public String getStrValue() {  
  26.         return this.strValue;  
  27.     }  
  28.     public void setStrValue(String strValue) {  
  29.         this.strValue = strValue;  
  30.     }  
  31. }  




继承 
父类 ExtendsFather.java 

Java代码  收藏代码
  1. /** 
  2.  * 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。 
  3.  * 对象的一个新类可以从现有的类中派生。 
  4.  * 1. 为什么要使用继承? 
  5.  *  a.提高程序的扩展性。 
  6.     b.提高了代码的重用性。 
  7.      
  8.    2. 子类能继承到父类的那些方法和属性 
  9.     第一种:所有的属性和方法都被子类继承到了。 
  10.     第二种: 
  11.     a、子类和父类在同一个包下: 
  12.     公有的受保护的属性和方法被子类继承到了。 
  13.     b、子类和父类不在同一个包下: 
  14.     公有的方法和属性被子类继承到了。 
  15.      
  16.    3. 子类的对象能调用父类的那些方法和属性? 
  17.     a、子类和父类在同一个包下: 
  18.     公有的受保护的属性和方法能被子类调用。 
  19.     b、子类和父类不在同一个包下: 
  20.     公有的方法和属性能被子类调用。 
  21.     在类和抽象类中,默认的就是受保护的。 
  22.     在接口中,默认的就是公有的。 
  23.  */  
  24. package com.study.feature;  
  25.   
  26. /**    
  27.  * 父类 
  28.  * @className :ExtendsFather   
  29.  * @package : com.study.feature  
  30.  * @Description :继承测试    
  31.  * @author:lgf    
  32.  * @date :2012 三月 12  10:33:02           
  33.  * @version : 1.0 
  34.  */  
  35. public class ExtendsFather {  
  36.     // 定义不同四种修饰符的属性  
  37.     private     String privateValue;  
  38.     protected   String protectedValue;  
  39.                 String defaultValue;  
  40.     public      String publicValue;  
  41.       
  42.     // 定义不同四种修饰符的方法  
  43.     private void privateFunction(){  
  44.         System.out.println("privateFunction");  
  45.     }  
  46.       
  47.     protected void protectedFunction(){  
  48.         System.out.println("protectedFunction");  
  49.     }  
  50.       
  51.     void defaultFunction(){  
  52.         System.out.println("defaultFunction");  
  53.     }  
  54.       
  55.     public void publicFunction(){  
  56.         System.out.println("publicFunction");  
  57.     }  
  58. }  



同包下的子类 ExtendsChildrenSamePackage.java 

Java代码  收藏代码
  1. package com.study.feature;  
  2. /** 
  3. *  
  4. *  
  5. * @className :ExtendsChildrenSamePackage   
  6. * @package : com.study.feature  
  7. * @Description : 同一个包下面的继承关系    
  8. * @author:lgf    
  9. * @date :2012 三月 12  10:51:23           
  10. * @version : 1.0 
  11.  */  
  12. public class ExtendsChildrenSamePackage extends ExtendsFather{  
  13.     public static void main(String[] args) {  
  14.         ExtendsFather children = new ExtendsChildrenSamePackage();  
  15.         //children.privateValue = "no"; 无法访问到  
  16.         children.defaultValue = "ok";  
  17.         children.protectedValue = "ok";  
  18.         children.publicValue = "ok";  
  19.           
  20.         //除了private修饰的方法,其他都继承到了  
  21.         //children.privateFunction();  
  22.         children.defaultFunction();  
  23.         children.protectedFunction();  
  24.         children.publicFunction();  
  25.     }  
  26. }  



不同包下的子类 ExtendsChildrenOtherPackage.java 


Java代码  收藏代码
  1. /** 
  2.  *  
  3.  */  
  4. package com.study.featureSecond;  
  5. import com.study.feature.ExtendsFather;  
  6.   
  7. /**    
  8.  *  
  9.  * @className :ExtendsChildrenOtherPackage   
  10.  * @package : com.study.featureSecond  
  11.  * @Description :不同包下面的继承关系    
  12.  * @author:lgf    
  13.  * @date :2012 三月 12  10:50:47           
  14.  * @version : 1.0 
  15.  */  
  16. public class ExtendsChildrenOtherPackage extends ExtendsFather{  
  17.     public static void main(String[] args) {  
  18.         ExtendsFather children = new ExtendsChildrenOtherPackage();  
  19.         //children.privateValue = "no"; 无法访问到  
  20.         //children.defaultValue = "no"; 无法访问到  
  21.         //children.protectedValue = "no"; 无法访问到  
  22.         children.publicValue= "ok";  
  23.           
  24.         //除了public修饰的方法,其他都未继承到了  
  25.         //children.privateFunction();  
  26.         //children.defaultFunction();  
  27.         //children.protectedFunction();  
  28.         children.publicFunction();  
  29.     }  
  30. }  



重载和重写 ExtendsOverRideLoad.java 

Java代码  收藏代码
  1. /** 
  2.  *  
  3.  */  
  4. package com.study.feature;  
  5.   
  6. /**    
  7.  *  
  8.  * @className :ExtendsClass   
  9.  * @package : com.study.feature  
  10.  * @Description :重载和重写    
  11.  * @author:lgf    
  12.  * @date :2012 三月 12  11:00:35           
  13.  * @version : 1.0 
  14.  */  
  15. public class ExtendsOverRideLoad extends ExtendsFather {  
  16.     @Override  
  17.     public void publicFunction() {  
  18.         //super.publicFunction(); 可以调用父类的方法  
  19.         System.out.println("Override publicFunction");  
  20.     }  
  21.       
  22.     public void publicFunction(String str) {  
  23.         //super.publicFunction(); 可以调用父类的方法  
  24.         System.out.println("overload publicFunction");  
  25.     }  
  26.       
  27.     public static void main(String[] args) {  
  28.         ExtendsFather child= new ExtendsOverRideLoad();  
  29.           
  30.         //Override publicFunction  
  31.         child.publicFunction();  
  32.           
  33.         //child.publicFunction("s");  仅仅只能使用到父类有的方法,重载的方法无法调用  
  34.           
  35.         ExtendsOverRideLoad childSecond = new ExtendsOverRideLoad();  
  36.           
  37.         //Override publicFunction  
  38.         childSecond.publicFunction();  
  39.           
  40.         //overload publicFunction  
  41.         childSecond.publicFunction("overLoad");  
  42.     }  
  43. }  



多态 

父类  Animal.java 

Java代码  收藏代码
  1. /** 
  2.  * 1. Java中除了static和final方法外,其他所有的方法都是运行时绑定的 
  3.  * 2. 构造方法是被隐式声明为static方法 
  4.  * 3. 动态绑定 
  5.  *  将一个方法调用和一个方法主体连接到一起称为绑定(Binding)。  
  6.  *  根据绑定的时机不同,可将绑定分为“早期绑定”和“后期绑定”两种。  
  7.  *  如果在程序运行之前进行绑定(由编译器和链接程序完成),称为早期绑定。  
  8.  *  如果在程序运行期间进行绑定,称为后期绑定,后期绑定也称为“动态绑定”或“运行时绑定”。  
  9.  *  在Java中,多态性是依靠动态绑定实现的,即Java虚拟机在运行时确定要调用哪一个同名方法。  
  10.  * 
  11.  *  4. 多态总结 
  12.  *      一、使用父类类型的引用指向子类的对象 
  13.  *      二、该引用只能调用父类中定义的方法和变量 
  14.  *      三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候, 
  15.  *          将会调用子类中的这个方法;(动态连接、动态调用) 
  16.  *      四、变量不能被重写(覆盖),”重写“的概念只针对方法, 
  17.  *          如果在子类中”重写“了父类中的变量,那么在编译时会报错。 
  18.  *  5. 多态详解 多态是通过:  
  19.  *      5.1 接口 和 实现接口并覆盖接口中同一方法的几不同的类体现的  
  20.  *      2 父类 和 继承父类并覆盖父类中同一方法的几个不同子类实现的. 
  21.  * 
  22.  *  6. 一个类型引用只能引用引用类型自身含有的方法和变量 
  23.  */  
  24. package com.study.feature;  
  25.   
  26. /**    
  27.  * @className :Animal   
  28.  * @package : com.study.feature  
  29.  * @Description :多态的测试    
  30.  * @author:lgf    
  31.  * @date :2012 三月 12  13:50:36           
  32.  * @version : 1.0 
  33.  */  
  34. public class Animal {  
  35.     public void eat(){  
  36.         System.out.println("eating");  
  37.     }  
  38. }  



多态实现 

Java代码  收藏代码
  1. /** 
  2.  *  
  3.  */  
  4. package com.study.feature;  
  5.   
  6. /**    
  7.  *  
  8.  * @className :Cat   
  9.  * @package : com.study.feature  
  10.  * @Description :猫    
  11.  * @author:lgf    
  12.  * @date :2012 三月 12  13:54:01           
  13.  * @version : 1.0 
  14.  */  
  15. public class Cat extends Animal{  
  16.     public void eat(){  
  17.         System.out.println("eating fish");  
  18.     }  
  19. }  



Java代码  收藏代码
  1. /** 
  2.  *  
  3.  */  
  4. package com.study.feature;  
  5.   
  6. /**    
  7.  *  
  8.  * @className :Dog   
  9.  * @package : com.study.feature  
  10.  * @Description :狗    
  11.  * @author:lgf    
  12.  * @date :2012 三月 12  13:55:38           
  13.  * @version : 1.0 
  14.  */  
  15. public class Dog extends Animal{  
  16.     public void eat(){  
  17.         System.out.println("eating Bone");  
  18.     }  
  19. }  




结果 

Java代码  收藏代码
  1. /** 
  2.  *  
  3.  */  
  4. package com.study.feature;  
  5.   
  6. /**    
  7.  *  
  8.  * @className :Main   
  9.  * @package : com.study.feature  
  10.  * @Description :多态测试    
  11.  * @author:lgf    
  12.  * @date :2012 三月 12  13:57:11           
  13.  * @version : 1.0 
  14.  */  
  15. public class Main {  
  16.       
  17.     public static void main(String[] args) {  
  18.         Animal animal = null;  
  19.         animal = new Animal();  
  20.         animal.eat();//eating  
  21.         Animal cat = new Cat();  
  22.         cat.eat();//eating fish  
  23.         Animal dog = new Dog();  
  24.         dog.eat();//eating Bone  
  25.     }  
  26. }  




例子2 

Java代码  收藏代码
  1. /** 
  2.  *  
  3.  */  
  4. package com.study.feature;  
  5.   
  6. /**    
  7.  *  
  8.  * @className :Father   
  9.  * @package : com.study.feature  
  10.  * @Description :多态    
  11.  * @author:lgf    
  12.  * @date :2012 三月 12  14:53:41           
  13.  * @version : 1.0 
  14.  */  
  15. public class Father {  
  16.     public void functionOne(){  
  17.         functionSecond();  
  18.     }  
  19.     public void functionSecond(){  
  20.         System.out.println("Father functionSecond");  
  21.     }  
  22. }  



Java代码  收藏代码
    1. /** 
    2.  *  
    3.  */  
    4. package com.study.feature;  
    5.   
    6. /**    
    7.  *  
    8.  * @className :Children   
    9.  * @package : com.study.feature  
    10.  * @Description :测试    
    11.  * @author:lgf    
    12.  * @date :2012 三月 12  14:55:15           
    13.  * @version : 1.0 
    14.  */  
    15. public class Children extends Father{  
    16.     public void functionSecond(){  
    17.         System.out.println("Children functionSecond");  
    18.     }  
    19.       
    20.     public static void main(String[] args) {  
    21.         Father c = new Children();  
    22.         c.functionOne();//Children functionSecond  
    23.     }  

转载于:https://www.cnblogs.com/caimuqing/p/5398415.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

银行家算法实验报告c语言版,银行家算法实验报告C语言版.doc

《操作系统》课程综合性实验报告姓名: 学号: 2016 年 11 月 20 日实验题目进程调度算法程序设计一、实验目的通过对安全性算法和银行家算法的模拟,进一步理解资源分配的基本概念,加深对资源申请,资源分配(银行家算法)以…

GetModuleHandle(NULL)获取当前DLL模块基址?

做一项目想在DLL内部代码实现获取本DLL的模块基址,而且不知道本DLL名称 最简单的方法是想到GetModuleHandle(NULL),是否可以呢? 参看http://blog.csdn.net/guzhou_diaoke/article/details/8826558到的答案是否 自己尝试了一下: DLL代码(testDll): BOOL …

DataTable是否存在某个列的判断

使用 DataTable.Columns.Contains方法可以判断某个列名是否存在于某个DataTable中 //添加模拟数据 DataTable t new DataTable(); DataColumn col new DataColumn("aaa"); t.Columns.Add(col); col new DataColumn("bbb"); t.Columns.Add(col); col ne…

【评分】第三次作业-团队展示

【评分】第三次作业-团队展示 总结 【2017-10-10】更新: 分数映射至 [1,2] 分 【注意】: 为了保护大家隐私,以后发表博客: 涉及到学号时,仅提供后三位涉及到姓名时,仅提供名(省略姓)…

c语言变量为什么要定义,C语言为什么要规定对所用到的变量要“先定义,后使用”...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼int a10;以上一句话对变量a进行了声明,定义以及初始化extern int a;以上一句话仅仅对变量a进行了声明,将a的链接属性设置为externalint *p;以上定义了一个指针int a10;int *p;p&a;以上为指针变量进行了赋…

iOS 开发--github的demo

令人惊讶的是,YYText 虽然代码量很大(超过一万行),但它只是 ibireme 的作品之一。ibireme 利用业余时间完成了 YYKit 工具库,包括: YYModel — 高性能的 iOS JSON 模型框架。 YYCache — 高性能的 iOS 缓存…

RabbitMQ快速安装配置指南

RabbitMQ快速安装配置指南 官网的安装教程由于需要解释原理很多废话,这里总结一下在CentOS7环境下的安装配置过程。如需理解原理,请看官网原文的安装指南或翻译1. 安装RabbitMQ server ## 安装epel源 yum install -y epel-release## 安装Erlang yum inst…

[转]基于Starling移动项目开发准备工作

最近自己趁业余时间做的flash小游戏已经开发得差不多了,准备再完善下ui及数值后,投放到国外flash游戏站。期间也萌生想法,想把游戏拓展到手机平台。这两天尝试了下,除去要接入ane接口的工作,小游戏本身不用做任何改动就…

c语言float输出分数,c语言同一题目求解结果用float和int输出值差1.

c语言同一题目求解结果用float和int输出值差1.答案:3 信息版本:手机版解决时间 2018-12-08 22:35已解决2018-12-08 05:38c语言同一题目求解结果用float和int输出值差1.最佳答案2018-12-08 06:01试试这样就好了#include main(){long i;float j,j1,j2,j4,j6,j10;j110…

《构建之法》阅读笔记02

今天我阅读了《构建之法》4-6章。有许多的感悟。 以前编程序总喜欢乱命名变量,觉得自己看的懂就行了。但读完构建之法第四章。我知道了程序是给别人看的,然后那只是程序比较简单而已。如果一个程序过于庞大,而变量的命名有没有实际的意义&…

2017-10-03 前端日报

2017-10-03 前端日报 精选 你需要知道的几类npm依赖包管理看Zepto如何实现增删改查DOM把cookie聊清楚6 Pro Tips from React DevelopersMulti-user experiences with A-Frameclintonwoo/hackernews-react-graphql: Hacker News clone rewritten with universal JavaScript, usi…

【朴灵评注】JavaScript 运行机制详解:再谈Event Loop

PS: 我先旁观下大师们的讨论,得多看书了~别人说的:“看了一下不觉得评注对到哪里去,只有吹毛求疵之感。 比如同步异步介绍,本来就无大错;比如node图里面的OS operation,推敲一下就可以猜到那是指同步操作&a…

c语言 strcpy原型,浅谈C语言中strcpy,strcmp,strlen,strcat函数原型

实例如下://strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的\0)并添加\0char *strcat(char * strDest, const char *strSrc){char *resstrDest;assert((strDest!NULL)&&(strSrc!NULL));while(*strDest)strDest;while(*strDest*strSrc){s…

angular——更多按钮的上拉菜单(路由跳转)

<button class"btn gray_text_btn list_item" ng-click"action.toMoreOptions()"><i class"icon ion-navicon"></i> </button> <!-------------------- 底部按钮 -----------------------><section class&qu…

Python版——博客网站四 编写日志创建页

2019独角兽企业重金招聘Python工程师标准>>> 开源地址&#xff1a;https://github.com/leebingbin/Python3.WebAPP.Blog 单从编码来说&#xff0c;WebApp开发真正困难的地方在于编写前端页面。前端页面需要混合HTML、CSS和JavaScript&#xff0c;如果对这三者没有深…

c语言0-1匀分布随机数,C++ generate_canonical均匀分布随机数函数用法详解

标准均匀分布是一个在范围 [0&#xff0c;1) 内的连续分布。generate_canonical() 函数模板会提供一个浮点值范围在 [0&#xff0c;1) 内&#xff0c;且有给定的随机比特数的标准均匀分布。它有 3 个模板参数&#xff1a;浮点类型、尾数的随机比特的个数&#xff0c;以及使用的…

第三十四天 how can I 坚持

“不要把所有的鸡蛋放在同一个篮子里”是错误的&#xff0c;投资应该像马克吐温说的那样&#xff0c;要把所有的鸡蛋放在同一篮子里&#xff0c;并小心的看好他。---巴菲特。 那盆花还没死&#xff0c;但是我又能做什么呢&#xff1f;技术。永远的技术。睡觉。转载于:https://w…

01-Swift 介绍

简介 Swift 语言由苹果公司在 2014 年推出&#xff0c;用来撰写 OS X 和 iOS 应用程序2014 年&#xff0c;在 Apple WWDC 发布 几家欢喜,几家愁愁者:只学Object-C的人欢喜者:之前做过java/python/js语言的人历史 2010 年 7 月&#xff0c;苹果开发者工具部门总监 Chris Lattner…

2017—2018 实验报告:实验一

实验一&#xff1a;实验报告 课程&#xff1a;程序设计与数据结构 班级&#xff1a; 1623 姓名&#xff1a; 张旭升 学号&#xff1a;20162329 指导教师&#xff1a;娄嘉鹏 王志强 实验日期&#xff1a;9月25日 实验密级&#xff1a; 非密级 预习程度&#xff1a; 已预习 必修/…

病床呼叫系统有显示屏c语言,病床呼叫系统毕业设计

内容介绍完整版大学病床呼叫系统毕业设计&#xff0c;已修改完格式摘 要医院已经从人工管理模式向智能化方向发展。“病床呼叫系统”可以实现对病房的智能化管理&#xff0c;可实现呼叫、求救警报、信息存储、显示等等功能。患者在住院期间&#xff0c;可能会在任意时间请求医…