- 浏览: 1591878 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
多态
//多态中成员的特点
接口的特点
多态的应用三:
Object中 几个 常用的方法
/** * 多态: 可以理解为事物存在的多种体现形态 * * 人:男人 女人 动物 : 猫,狗 * * 猫 x=new 猫(); 动物 x=new 猫(); * * 1.多态的体现 * 父类的引用指向子类的对象 * 父类的引用可以接受自己的子类对象 * 2.多态的前提 * 类和类之前要有关系,要么继承,要么实现 * 通常还有一个前提:存在覆盖. * 3.多态的好处 * 多态的初相大大的提高程序的扩展性 * 4.多态的弊端 * 提高了扩展性,但是只能使用父类的引用访问父类中的成员 * 5.多态应用 * * 6.多态出现代码中的特点(多态使用注意事项) * * */ abstract class Animal{ public abstract void eat(); } class Cat extends Animal{ @Override public void eat() { System.out.println("吃鱼"); } public void catchMouse(){ System.out.println("抓老鼠"); } } class Dog extends Animal{ public void eat() { System.out.println("啃骨头"); } public void kanJia(){ System.out.println("看家"); } } class Pig extends Animal{ public void eat() { System.out.println("饲料"); } public void gondDi(){ System.out.println("拱地"); } } public class DuotaiDemo { public static void main(String[] args) { Cat c=new Cat(); c.eat(); Dog d=new Dog(); d.eat(); function(new Cat()); function(new Dog()); function(new Pig()); // 父类的引用指向指向子类的对象 Animal ac=new Cat(); //类型提升,向上转型 将猫转型 成父类型 function(ac); Animal ad=new Dog(); function(ad); //如果想要调用猫的特有方法时 //强制父类的引用,装成子类型 Cat cc=(Cat)ac; //向下转型 cc.catchMouse(); } /*public static void function(Cat c){ c.eat(); } public static void function(Dog d){ d.eat(); } //一年后 养猪了 public static void function(Pig p){ p.eat(); } */ //提高代码的扩展性 可以将下面的封装成一个 工具类 专门用来操作这一类对象的 public static void function(Animal a){ a.eat(); //instanceof :在子类是有限的时候可以判断 . 判断后 然后在应用其 特定的方法. if(a instanceof Cat) ((Cat) a).catchMouse(); else if(a instanceof Dog) ((Dog) a).kanJia(); else if(a instanceof Pig) ((Pig) a).gondDi(); }
//多态中成员的特点
/** * 多态中成员的特点 * 非静态成员函数: 成员函数在多态调用时,编译看着左边,运行看右边. * * 成员变量: 都参考左边(应用类型所属的类) * 静态成员函数: 无论编译和运行 都参考左边 * */ class Fu { int num=5; static int num1=5; static final int num2=5; void method1() { System.out.println("Fu_method1"); } void method2() { System.out.println("Fu_method2"); } //静态 static void method4() { System.out.println("Fu_method4"); } } class Zi extends Fu { int num=8; static int num1=8; static final int num2=8; void method1() { System.out.println("Zi_method1"); } void method3() { System.out.println("Zi_method3"); } //静态 static void method4() { System.out.println("Zi_method4"); } } public class DuotaiDemo1 { /** * @param args */ public static void main(String[] args) { //方法 Fu f=new Zi(); f.method1(); //打印 Zi_method1 f.method2(); //打印 Fu_method2 //f.method3();编译失败 f.method4(); Zi z=new Zi(); z.method1(); //打印 Zi_method1 z.method2(); //打印 Fu_method2 z.method3(); //打印 Zi_method3 z.method4(); //变量 Fu ff=new Zi(); System.out.println(ff.num); // 5 System.out.println(ff.num1); // 5 System.out.println(ff.num2); // 5 Zi zz=new Zi(); System.out.println(zz.num); // 8 System.out.println(zz.num1); // 8 System.out.println(zz.num2); // 8 }
接口的特点
/** * 需求: * 电脑运行实例: * 电脑运行基于主板. * * 多态应用 * 接口:降低耦合性,提高程序的扩展性.提供了规则 */ class MainBoard1{ public void run(){ System.out.println("mainboard run"); } //升级一 public void userNetCard(NetCard1 c){ c.open(); c.close(); } } //升级 一:要上网 怎么办? class NetCard1{ /** * 发现 耦合性很高,如果要听音乐 ,需要 取下这个网卡 */ public void open(){ System.out.println("NetCard open"); } public void close(){ System.out.println("NetCard close"); } } //升级二 :要听音乐 (主板厂商 召集个功能卡开发商 开会 ,定义PCI插槽规则) interface PCI{ public void open(); public void close(); } class MainBoard{ public void run(){ System.out.println("mainBoard run"); } public void userPCI(PCI p){ //接口的引用 执行 子类的对象 if(p!=null){ p.open(); p.close(); } } } class NetCard implements PCI{ @Override public void open(){ System.out.println("NetCard open"); } @Override public void close(){ System.out.println("NetCard close"); } } class SoundCard implements PCI{ @Override public void open(){ System.out.println("SoundCard open"); } @Override public void close(){ System.out.println("SoundCard close"); } } //测试 public class DuoTaiDemo2 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub MainBoard1 mb1=new MainBoard1(); mb1.run(); //升级一 mb1.userNetCard(new NetCard1()); //升级二 MainBoard mb=new MainBoard(); mb.run(); mb.userPCI(null); mb.userPCI(new NetCard()); mb.userPCI(new SoundCard()); } }
多态的应用三:
/** * 需求: 数据库的操作 * 数据是:用户信息 * 1.连接数据库 * 2.操作数据库 JDBC HIBERNATE * CRUD * 3.关闭数据库连接 */ //升级三 interface UserInfoDao{ public void add(User user); public void delete(User user); } class UserInfoByJDBC implements UserInfoDao{ public void add(User user){ /* * 1.JDBC连接数据库 * 2.使用sql添加语句添加数据 * 3.关闭连接 */ } public void delete(User user){ /* * 1.JDBC连接数据库 * 2.使用sql添加语句删除数据 * 3.关闭连接 */ } } //升级 1: 公司数采用 hibernate框架 class UserInfoByHibernate implements UserInfoDao{ public void add(User user){ /* * 1.Hibernate连接数据库 * 2.使用sql添加语句添加数据 * 3.关闭连接 */ } public void delete(User user){ /* * 1.Hibernate连接数据库 * 2.使用sql添加语句删除数据 * 3.关闭连接 */ } } public class DuoTaiDemo4 { public static void main(String[] args) { // TODO Auto-generated method stub UserInfoByJDBC ui=new UserInfoByJDBC(); ui.add(user); ui.delete(user); //升级 1: 公司要求采用 hibernate框架 发现修改代码的时候还是挺麻烦的 UserInfoByHibernate uh=new UserInfoByHibernate(); uh.add(user); uh.delete(user); //采用多态 UserInfoDao ud=new UserInfoByHibernate(); ud.add(user); ud.delete(user); } }
Object中 几个 常用的方法
/** *Object 是所有对象的直接或者间接父类.该类定义的肯定是所有对象 所有具备的功能 * *Object 中已经提供了对象是否相同的比较方法,我们只需要重写 */ class Demo //extends Object { Demo(){ super();//默认调用 Object } private int num; Demo(int num){ this.num=num; } public boolean compare(Demo d){ return this.num==d.num; } //使用Object 的比较方法 public boolean equals(Object obj){ // Object obj=new Demo(); if(!(obj instanceof Demo)) //判断类型 return false; Demo d=(Demo)obj; //向下转型 return this.num==d.num; } public String toString(){ return "Demo"+num; } } class Person{ } public class ObjectDemo { public static void main(String[] args) { System.out.println("========equals==========="); Demo d1=new Demo(4); Demo d2=new Demo(5); Demo d3=d1; System.out.println(d1.equals(d2)); System.out.println(d1==d2); System.out.println(d1==d3); Person p=new Person(); System.out.println(d1.equals(p)); System.out.println("========toString==========="); System.out.println(d1.toString()); //打印 d1所属类型 和 在内存地址中的值 System.out.println(Integer.toHexString(d1.hashCode())); Class c=d1.getClass(); System.out.println(c.getName()); System.out.println(c.getName()+"@"+Integer.toHexString(d1.hashCode())); System.out.println(d1.toString()); } }
发表评论
-
检测一个字符串是否在jvm的常量池中
2018-12-18 17:34 1004public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2285经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5661package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 1003import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1057/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 1012//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1828更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1419import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 818import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2401import java.util.concurrent ... -
jdk1.5 锁 Lock 和 Condition
2016-08-02 17:03 927// lock 练习 public class Lock ... -
JDK1.5 获取线程执行结果 Callable Future
2016-08-02 15:08 1176import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 806import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1148import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3895import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 969/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 1027import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1843Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 1010/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2234package out; import ja ...
相关推荐
总结以上,"08_Java基础语法_第8天(Eclipse)_讲义"涵盖了Eclipse中使用Java基础语法的各个方面,从基本数据类型到面向对象编程,再到IDE的使用技巧。通过深入学习这些内容,开发者将能够高效地在Eclipse中进行Java...
细品这杯香浓的咖啡——阿里中间件高级专家沈询的Java之旅.docx 给你一次机会面试架构师 你会问什么问题?.docx 超全面:程序员跳槽神级攻略.docx 跳还是不跳,是一个问题——跳槽时该如何权衡?.docx 进入IT企业...
12. **反射**:通过反射机制,可以在运行时动态地获取类的信息并操作对象,这是Java高级特性之一。 13. **泛型**:泛型提供了一种在编译时检查类型安全的方法,同时允许程序员编写更灵活的代码。 14. **Java API的...
Java编程语言以其强大的功能、跨平台的特性以及丰富的开源库,成为了全球软件开发者的首选工具之一。对于初学者来说,掌握Java技术可以打开许多职业发展机会。"Java100天速成"是一个专为新手设计的学习计划,旨在...
在《Java100天速成》中,函数式编程也会被提及,这是Java 8引入的一个重要特性,包括Lambda表达式和流API。这些新工具大大简化了代码,提高了代码的可读性和可维护性。 此外,课程还会涵盖Java的标准库,例如 Swing...
本讲义“11-面向对象-第3天(接口多态)”深入探讨了面向对象中的两个关键特性:接口和多态。 首先,接口在面向对象编程中扮演着规范和契约的角色。接口定义了一组方法签名,但不包含任何实现。它允许不同的类遵循...
1. **面向对象编程(OOP)**:Java是一门面向对象的语言,第8天的课程可能会重点讲解OOP的四大特性——封装、继承、多态和抽象。封装是隐藏对象的属性和实现细节,仅对外提供公共访问方式;继承允许一个类(子类)...
* 视频:韩顺平 - 零基础 30 天学会 Java * 文档:菜鸟教程 - Java 教程 * 书籍:《Head First Java》 * 在线游戏:Codegym * 视频:宋红康 - 全网最全 Java 零基础入门教程 * 文档:菜鸟教程 - Java 8 新特性 * ...
1 拓薪教育-计算机基础初识JAVASE.docx 10 第10天eclipse的使用和异常处理.docx 11 JAVASE第11天字符串.docx ...8 J2SE之接口和多态.docx 9 JAVASE第九天.docx 9 JAVASE第九天1.docx java文档整合.docx
Java编程语言是世界上最流行的编程语言之一,以其跨平台、面向对象和强大的库支持而闻名。"21天学通Java英文版"是一本旨在帮助初学者在短时间内掌握Java核心技术的教程。通过21天的学习计划,这本书将引导读者从基础...
2. **面向对象**:Java强调封装、继承和多态等面向对象的特性,适合大型软件的开发。 3. **安全性**:Java设计了许多安全机制,防止恶意代码对系统造成破坏。 4. **健壮性**:Java有严格的类型检查和异常处理机制,...
Java基础18天 Typora笔记概述 这是一份专为Java初学者准备的学习资源,由魔乐科技提供,旨在帮助用户在18天内建立起坚实的Java编程基础。Typora是一款简洁而高效的Markdown编辑器,使得笔记整理和阅读更加便捷。...
"java学习16天"可能是指一个为期16天的Java编程学习计划,旨在帮助初学者快速掌握Java基础并深入理解其核心概念。在这个过程中,学习者通常会涉及以下几个关键知识点: 1. **Java基础知识**:首先,学习Java需要...
第8-10天:数组和集合框架 数组是存储相同类型元素的固定大小的序列,而集合框架则是更灵活的数据结构,如ArrayList、LinkedList、HashSet、HashMap等。学习者将学习如何声明、初始化和操作数组,以及如何使用集合...
- 面向对象:Java支持封装、继承和多态三大面向对象的特性。 - 健壮性:Java有异常处理和垃圾回收机制,增强了程序的健壮性。 - 安全性:提供了安全管理器和类加载器等机制,用于保护应用程序不受恶意代码的攻击。 -...
8. **JAVA Swing和JavaFX**:学习如何使用JAVA创建图形用户界面(GUI),掌握Swing组件库的使用,或者更现代的JavaFX技术。 9. **JAVA网络编程**:理解网络编程基础,学习Socket通信,以及如何使用HTTP协议进行网络...
2. **类与对象**:Java是面向对象的语言,所以理解类的定义、对象的创建以及封装、继承和多态等面向对象特性至关重要。 3. **方法**:方法是Java中的功能模块,用于封装代码。学习如何定义和调用方法,理解参数传递...
在"27天成为Java大神之Day02"的学习旅程中,我们开始深入Java的世界。这个阶段,我们将重点理解Java的基础概念,为后续的高级主题打下坚实的基础。Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现...
《21天学通Java》是一本面向初学者的编程教程,旨在帮助读者在短时间内掌握Java编程基础。这本书由庞永庆、庞丽娟等人编著,提供了丰富的实例和实践练习,以帮助学习者深入理解Java语言的核心概念。源代码是书中各个...
8. **Java标准库**:熟悉Java的API,如IO、NIO、网络、XML解析、日期时间处理等。 9. **泛型**:泛型提高了代码的类型安全性和重用性,是Java 5引入的重要特性。 10. **注解**:注解用于提供元数据,可以被编译器...