- 浏览: 248680 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
javatozhang:
讲解的的确不错。很实用。
Hibernate数据拦截与事件监听 -
sjx19871109:
更正一个地方:<event type="pos ...
Hibernate search -
xifan:
你好,楼主。
mutable="false 好像是 ...
Hibernate持久化对象生命周期 -
leo_cao:
很好,很实用
Hibernate数据拦截与事件监听 -
fehly:
47816778 写道你这样不会出现number 的精度问题吗 ...
Hibernate Annotations
说了开始复习基础了,虽然以前也做过笔记,而且现在属于复习,在考虑是否还要写笔记包括blog是否要写这些东西,想了好久,还是写写吧,不然一天干了什么都不知道..
抽象类
- 在定义java方法时可以只给出方法头,而不必给出方法体,即方法实现的细节,这样的方法被称为抽象方法。
- 抽象方法必须使用关键字abstract修饰,包含抽象方法的类必须声明为抽象类。
- java语法规定,子类必须实现父类中的所有抽象方法,否则改子类也只能声明为抽象类。
- 抽象类不能被实例化。
public abstract class Animal { private int age; public void setAge(int age){ this.age=age; } public int getAge(){ return age; } public abstract void eat(); }
public class Person extends Animal { private String name; public void setName(String name){ this.name=name; } public String getName(){ return name; } public void eat(){ //重写方法 System.out.println("洗手--做饭--吃饭--收拾"); } }
public class Test { public static void main(String[] args){ Animal a=new Person();//正确 //Animal a=new Animal(); 错误 a.setAge(2); a.eat(); } }
抽象类主要是通过继承、再由其子类发挥作用的,其中作用包括两方面:
- 代码的重用
- 规划
其他特性:
- 抽象类中可以不包含抽象方法;
- 子类中可以不全部实现抽象父类中的抽象方法,但是此时子类也只能声明为抽象类;
- 父类不是抽象类,但在子类中可以添加抽象方法,但子类需声明为抽象类;
- 抽象类中可以声明static属性和方法
接口
- 接口(interface)是抽象方法和常量值的定义的集合。
- 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
public interface Runner { public static final int id=1; public abstract void start(); public abstract void run(); public abstract void stop(); }
- 接口中定义的属性必须是public static final的,而接口中定义的方法则必须是public abstract的,因此这些修饰符可以是部分或全部
public interface Runner { public static final int id=1; public abstract void start(); public abstract void run(); public abstract void stop(); }
等价于------------------------------------------------->
public interface Runner { int id=1; void start(); void run(); void stop(); }
- 和继承关系类似,java类可以"实现"接口,且接口和实现类之间也存在多态性。
[<modifier>] class <name> [extends <superclass>] [implements <interface> [,<interface>]*]{ declarations>* }
public class Person implements Runner { public void start(){ System.out.println("弯腰,准备,开跑"); } public void run(){ System.out.println("加速冲向终点"); } public void stop(){ System.out.println("胜利,休息"); } }
public class Test { public static void main(String[] args){ Runner r=new Person(); r.start(); r.run(); r.stop(); } }
- 接口的多重实现
interface Runner{ public void run(); }
interface Swimmer{ public void swim(); }
abstract class Animal{ public abstract void eat(); }
class Person extends Animal implements Runner,Swimmer { public void run(){ System.out.println("I am runing"); } public void swim(){ System.out.println("I am Swimming"); } public void eat(){ System.out.println("I am eating"); } }
public class Test{ public static void main(String[] args){ Test t=new Test(); Person p=new Person(); t.m1(p); t.m2(p); t.m3(p); } public void m1(Runner f){ f.run(); } public void m2(Swimmer s){ s.swim(); } public void m3(Animal a){ a.eat(); } }
输出结果:
I am running
I am swimming
I am eating
接口间的继承
interface A{ public void ma(); } interface B{ public int mb(int i) } interface C extends A,B{ public String mc(); } class D implements C{ public void ma(){ System.out.println("Implements method ma()"); } public int mb(int i){ return 2000+i; } public String mc(){ return "Hello"; } }
接口特性总结
- 通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系;
- 接口可以被多重实现
- 接口可以继承其它的接口,并添加新的属性和抽象方法,接口间支撑多重继承
嵌套类
java语言支持类的嵌套定义,即允许将一个类定义在其他类的内部,其中内层的类被称为嵌套类(Nested Class)
嵌套类可以分为两种:
- 静态嵌套类(Static Nested Class):使用static修饰的嵌套类;
- 内部类(Inner Class):非static的嵌套类
public class A{ ... private class B{ //内部类 ... } public static class C{ //静态嵌套类 ... } }
内部类又可分为三种情况:
- 普通的内部类:在java类中、方法或语句块的外部定义的非static类。
- 局部内部类:也称局部类(Local Class),定义在方法或语句块中的类
- 匿名内部类:也称匿名类(AnonymousClass),定义在方法或语句块中,该类没有名字.只能在其所在之处使用一次
- 内部类与其所在的外层类之间存在着逻辑上的依赖关系——内部类的对象不能单独存在,它必须依赖一个其外层类的对象;
- 在内部类中可以直接访问其外层类中的成员、包括属性和方法,即使在这些属性和方法是private的
- 内部类可以声明为抽象类,因此可以被其它的内部类继承,也可以声明为final的
- 和外层类不同,内部类可以声明为private或protected。
public class A{ private int s; private class B{ public void mb(){ s=100; System.out.println("在内部类B中S="+s); } } public void ma(){ B i=new B() i.mb(); } }
public class TestInner{ public static void main(String[] args){ A o=new A(); o.ma(); } }
- 在外部使用其他类中的内部类时,应指明起完整层次,并显示建立对象间的依赖关系。
public class A{ private int s; private class B{ public void mb(){ System.out.println(s); } } }
public class TestInner2{ public static void main(String[] args){ A a=new A(); //创建一个依赖于a而存在的b A.B b=a.new B(); b.mb(); } }
- 内部类中出现变量名冲突时,可以使用内部类对象的特殊性"<外层类名>.this"来访问其所依赖外层类对象的成员.
class A{ private int s=111; private class B{ private int s=222; public void mb(int s){ System.out.println(s);//局部变量s System.out.println(this.s);//内部类对象的属性s System.out.println(A.this.s);//外层类对象属性s } } }
public class TestInner3{ public static void main(String[] args){ A a=new A(); A.B b=a.new B(); b.mb(333); } }
枚举类型
- Java SE5.0开始,java语言引入了一种新的引用数据结构——枚举(Enum).
- Java 语言中枚举类型均自动继承了java.lang.Enum类(该类继承了Object类).
- 枚举类型使用一组常量值来表示特定的数据集合,改集合中数据的数目确定(通常较少),且这些数据只能取预先定义的值。
public enum Week{ Mon,Tue,Wed,Thu,Fri,Sat,Sun }
public class TestEnum{ public static void main(String[] args){ TestEnum te=new TestEnum(); te.work(Week.Sun); } public void work(Week day){ if(day.equals(Week.Sat)){ System.out.println("shopping"); }else if(day.equals(Week.Sun)){ System.out.println("sleep"); }else{ System.out.println("work"); } } }
发表评论
-
Json将对象转换成字符串
2010-11-26 22:41 10662最近用到Json传输对象交互,整理一个简单的方法. ... -
JDBC编程
2010-05-13 20:03 4123数据库简介 数据库(DB,Data Base) 数据库管理 ... -
应用程序国际化
2010-05-12 20:44 1515基本概念 国际化(Internationalization, ... -
网络编程
2010-05-09 16:46 1800计算机网络基础 什么是计算机网络 把分布在不同地理区域的计 ... -
线 程
2010-05-08 16:22 1448线 程 线程是一个程序内部的顺序控制流 线程和进程 每 ... -
泛 型
2010-05-05 12:42 1732什么是泛型 泛型(Gernerics)机制自java se ... -
Java I/O编程
2010-05-04 20:58 6872java i/o原理 基本概念: I/O(Input/O ... -
集合与映射
2010-05-02 20:22 2327集合框架概述 集合就是将若干用途,性质相同或相见的数组合 ... -
控制台应用程序设计
2010-04-30 16:24 1856命令行参数 在启动时java控制台应用程序,可以一次性地向 ... -
java常用类
2010-04-29 16:33 5011Object类 java.lang.Object类是所有ja ... -
异常的处理
2010-04-27 18:46 1958异常 异常(Exception)是程序运行过程中发生的事件 ... -
java.lang包错误概述
2010-04-15 20:07 2290接口 java.lang.Appendable可追加(app ... -
java对日期的操作技巧
2010-03-30 15:52 1444这篇文章是很早很早存机子上的...也是在哪里看到的然 ... -
MyEclipse6.5安装SVN插件的三种方法
2010-03-18 16:06 1588一、安装方法: 方 ... -
关于java打包问题
2010-03-09 20:25 23021、怎么把一个java文件打包到当前目录 javac ... -
关于MyEclipse/Eclipse汉化问题
2010-03-07 19:23 1274这个是关于MyEclipse/Eclips ... -
Could not find the main class. Program will exit
2010-03-06 21:07 11319虽然说 ...
相关推荐
Java语言的高级类特性是其强大且灵活的关键因素之一,这些特性使得开发者能够构建出高效、可维护的代码。在“第七章高级类特性”中,我们主要会探讨以下几个核心概念: 1. **抽象类与接口**:抽象类是不能被实例化...
Java 基础-高级类特性 本资源摘要信息涵盖了 Java 编程语言的高级类特性,包括 static 关键字、final 关键字、抽象类、接口、内部类等知识点。 1. static 关键字 static 关键字是 Java 中的一个关键字,用于修饰...
Java程序设计中的高级类特性是Java编程中至关重要的一部分,这些特性包括了静态成员、final关键字、抽象类、接口以及内部类。本章将详细探讨这些关键概念。 首先,`static`关键字是Java中一个非常重要的修饰符。它...
【Java编程详细教程高级类特性】深入解析 Java编程语言具有丰富的高级类特性,这些特性使得Java成为一种强大且灵活的编程工具。本教程将详细讲解其中的关键知识点,包括`static`关键字、Singleton设计模式、`final`...
【Java SE 完整版精品课程 - 高级类特性2】 Java SE 是Java Standard Edition的简称,是Java平台的核心部分,主要用于桌面应用和服务器端应用的开发。本课程是针对Java初学者精心设计的教程,涵盖了从基础到进阶的...
本教程将聚焦于PHP5的面向对象高级类特性,帮助开发者深入理解并掌握这些特性,以提升PHP编程的专业水平。 一、抽象类与抽象方法 在PHP5中,抽象类通过关键字`abstract`定义,它不能被实例化,而是作为其他类的基类...
这份“Java SE完整版精品优质课件”是针对初学者和进阶者设计的,特别是对于想要深入学习Java高级类特性的开发者而言,这是一个非常有价值的资源。在第四章“高级类特性1”中,我们将探讨一些Java编程中更复杂且实用...
本章“高级类特性2”是Java基础知识培训的一部分,旨在深入讲解Java类的高级特性和概念,这对于Java自学入门者或进阶学习者来说是至关重要的。以下是对这些高级类特性的详细解析: 1. **封装**:封装是面向对象编程...
在第4章"高级类特性1"中,我们重点探讨了面向对象编程的一些关键概念: 1. **继承**:继承是面向对象编程的重要特性之一,它允许一个类(子类)从另一个类(父类)继承属性和方法。在Java中,使用`extends`关键字来...
Java编程详细教程高级类特性下PPT教案学习.pptx
Java基础阶段:一尚硅谷20天java核心技术教程\第4章:高级类特性1(day07-day09)\day07
从给定的文件信息来看,主要讨论了Java的高级特性,包括多态、关键字static以及其在类中的应用。下面将详细阐述这些知识点。 ### 多态 多态是面向对象编程的重要特性之一,允许子类重写父类的方法,从而实现同名...
当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产生了...
在Java编程语言中,"高级类特性"是学习和掌握Java技术栈的关键部分。本"零基础Java入门课程-高级类特性"旨在帮助初学者在Java 14这个最新平台上建立起坚实的编程基础,特别是深入理解Java集合框架。下面将详细阐述...