java5

1:final关键字(掌握)
	(1)是最终的意思,可以修饰类,方法,变量。
	(2)特点:
		A:它修饰的类,不能被继承。
		B:它修饰的方法,不能被重写。
		C:它修饰的变量,是一个常量。
	(3)面试相关:
		A:局部变量
			a:基本类型 值不能发生改变
			b:引用类型 地址值不能发生改变,但是对象的内容是可以改变的
		B:初始化时机
			a:只能初始化一次。
			b:常见的给值
				定义的时候。(推荐)
				构造方法中。

2:多态(掌握)
	(1)同一个对象在不同时刻体现出来的不同状态。
	(2)多态的前提:
		A:有继承或者实现关系。
		B:有方法重写。
		C:有父类或者父接口引用指向子类对象。

		多态的分类:
			a:具体类多态
				class Fu {}
				class Zi extends Fu {}

				Fu f = new Zi();
			b:抽象类多态
				abstract class Fu {}
				class Zi extends Fu {}

				Fu f = new Zi();
			c:接口多态
				interface Fu {}
				class Zi implements Fu {}

				Fu f = new Zi();
	(3)多态中的成员访问特点
		A:成员变量
			编译看左边,运行看左边
		B:构造方法
			子类的构造都会默认访问父类构造
		C:成员方法
			编译看左边,运行看右边
		D:静态方法
			编译看左边,运行看左边

		为什么?
			因为成员方法有重写。
	(4)多态的好处:
		A:提高代码的维护性(继承体现)
		B:提高代码的扩展性(多态体现)
	(5)多态的弊端:
		父不能使用子的特有功能。

		现象:
			子可以当作父使用,父不能当作子使用。
	(6)多态中的转型
		A:向上转型
			从子到父
		B:向下转型
			从父到子
	(7)孔子装爹的案例帮助大家理解多态
	(8)多态的练习
		A:猫狗案例
		B:老师和学生案例

3:抽象类(掌握)
	(1)把多个共性的东西提取到一个类中,这是继承的做法。
	   但是呢,这多个共性的东西,在有些时候,方法声明一样,但是方法体。
	   也就是说,方法声明一样,但是每个具体的对象在具体实现的时候内容不一样。
	   所以,我们在定义这些共性的方法的时候,就不能给出具体的方法体。
	   而一个没有具体的方法体的方法是抽象的方法。
	   在一个类中如果有抽象方法,该类必须定义为抽象类。
	(2)抽象类的特点
		A:抽象类和抽象方法必须用关键字abstract修饰
		B:抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
		C:抽象类不能实例化
		D:抽象类的子类
			a:是一个抽象类。
			b:是一个具体类。这个类必须重写抽象类中的所有抽象方法。
	(3)抽象类的成员特点:
		A:成员变量
			有变量,有常量
		B:构造方法
			有构造方法
		C:成员方法
			有抽象,有非抽象
	(4)抽象类的练习
		A:猫狗案例练习
		B:老师案例练习
		C:学生案例练习
		D:员工案例练习
	(5)抽象类的几个小问题
		A:抽象类有构造方法,不能实例化,那么构造方法有什么用?
			用于子类访问父类数据的初始化
		B:一个类如果没有抽象方法,却定义为了抽象类,有什么用?
			为了不让创建对象
		C:abstract不能和哪些关键字共存
			a:final	冲突
			b:private 冲突
			c:static 无意义

4:接口(掌握)
	(1)回顾猫狗案例,它们仅仅提供一些基本功能。
	   比如:猫钻火圈,狗跳高等功能,不是动物本身就具备的,
	   是在后面的培养中训练出来的,这种额外的功能,java提供了接口表示。
	(2)接口的特点:
		A:接口用关键字interface修饰
			interface 接口名 {}
		B:类实现接口用implements修饰
			class 类名 implements 接口名 {}
		C:接口不能实例化
		D:接口的实现类
			a:是一个抽象类。
			b:是一个具体类,这个类必须重写接口中的所有抽象方法。
	(3)接口的成员特点:
		A:成员变量
			只能是常量
			默认修饰符:public static final
		B:构造方法
			没有构造方法
		C:成员方法
			只能是抽象的
			默认修饰符:public abstract
	(4)类与类,类与接口,接口与接口
		A:类与类
			继承关系,只能单继承,可以多层继承
		B:类与接口
			实现关系,可以单实现,也可以多实现。
			还可以在继承一个类的同时,实现多个接口
		C:接口与接口
			继承关系,可以单继承,也可以多继承
	(5)抽象类和接口的区别(自己补齐)?
		A:成员区别
			抽象类:
			接口:
		B:关系区别:
			类与类:
			类与接口:
			接口与接口:
		C:设计理念不同
			抽象类:is a,抽象类中定义的是共性功能。
			接口:like a,接口中定义的是扩展功能。
	(6)练习:
		A:猫狗案例,加入跳高功能
		B:老师和学生案例,加入抽烟功能0
时间: 2024-10-28 19:19:17

java5的相关文章

Java5 并发学习

source:http://lavasoft.blog.51cto.com/62575/115112 Java5 并发学习 在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动.调度.管理线程的一大堆API了.在Java5以后,通过 Executor来启动线程比用Thread的start()更好.在新特征中,可以很容易控制线程的启动.执行和关闭过程,还可以很容易使用线程池的特 性. 一.创建任务 任务就是一个实现了Runnable接口的类. 创建的时候实run方法即可. 二.执

[Java5新特性]自动装箱/拆箱

自动装箱/拆箱概述 Java中具有基本类型(int,double,float,long,boolean,char,byte,short)和基本类型包装类(Integer,Double,Float,Long,Boolean,Char,Byte,Short),我们实现基本类型与包装类之间的转换基本有两种方式: 一种为JDK5之前的方式,比如Integer i = Integer.valueof(5);(这里5为基本类型int,Integer包装类利用valueof()方法将其转换为Integer类型

Java5新特性之静态导入、可变参数、增强for循环、自动拆装箱

JDK1.5已经发布很长时间,之所以还拿出来是因为它增加了很多个重要的特性,使用这些特性有助于我们简化开发,编写的代码更加简洁清晰安全,主要有以下几个特性: ?  静态导入 ?  可变参数 ?  增强for循环 ?  自动拆装箱 ? 泛型 ? 枚举 由于泛型.枚举内容比较多,也最重要,之后单拿出来讲.这里先介绍前面四个简单而又实用的小特性. 1. 静态导入 所谓"静态导入"只不过是在普通的import语句中加入关键字static,例如: ?  非静态导入:import java.lan

java5、java6、java7、java8的新特性

Java5: 1.泛型 Generics:        引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处. Parameterized Type作为参数和返回值,Generic是vararg.annotation.enumeration.collection的基石. A.类型安全 抛弃List.Map,使用List<T>.Map<K,V>给它们添加元素或者使用Iterator<T>遍历时,编译期就可以给你检查出类型错误 B

Java5新特性

"JDK1.5/Java5"的一个重要主题就是通过新增一些特性来简化开发. 这些特性包括泛型,for-each循环,自动装包/拆包,枚举,可变参数, 静态导入,注解. 使用这些特性有助于我们编写更加清晰,精悍,安全的代码. 1.泛型(Generic)C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能.一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换.猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到

Java5、Java6、Java7的新特性

Java5.Java6.Java7的新特性 摘自http://blog.csdn.net/heardy/article/details/8184430 Java5:1.泛型 Generics:引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处.Parameterized Type作为参数和返回值,Generic是vararg.annotation.enumeration.collection的基石. A.类型安全 抛弃List.Map,使用List<T

13.Java5条件阻塞Condition的应用

1 import java.util.concurrent.locks.Condition; 2 import java.util.concurrent.locks.Lock; 3 import java.util.concurrent.locks.ReentrantLock; 4 5 /** 6 * Java5条件阻塞Condition的应用 7 * Condition的功能类似在传统线程技术中的Object.wait()和Object.notify()功能. 8 * 在等待Condition

java5线程池详解与Executors类创建不同线程池的用法

java中的线程池是非常重要的,它可以节省资源开销,从而提升程序的性能.向Tomcat等一些web服务器都必须用到线程池.java5中为我们提供了一些应用线程池的API,下面的代码将详解其用法. package hxl.insist; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorSer

Java多线程与并发库高级应用-java5线程并发库

java5 中的线程并发库 主要在java.util.concurrent包中 还有 java.util.concurrent.atomic子包和java.util.concurrent.lock子包

java5后的并发池

本文可作为传智播客<张孝祥-Java多线程与并发库高级应用>视频的学习记录. 为什么需要并发池 之前写并发的时候 new Thread(new Runnable(){ public void run{ //.... } }).start(); 没有什么问题呀,为什么需要并发池呢? 我们拿tomcat来举个例子.每次我们对服务器做一个请求,tomcat就得分出一个线程来处理我们的事.那么是不是,我们每次发一个请求,tomcat就像上面那样启动一个线程,等到run方法执行完了,这个线程也就死了.如