第四节:JAVA中的继承和抽象类
1. JAVA中的继承使用extends,JAVA中不允许多继承
2. JAVA中默认支持动态绑定,如果不希望子类重写父类的函数,使用final关键字。
3.this:代表当前对象。
4.super:调用父类的方法或者父类的构造函数。
5.instanceof:判断一个对象是否是类的实例.
(1)Employee e=new Employee();
if(e instanceof Employee)
{
System.out.println("OK");
}
else
{
System.out.println("NO");
}
(2)
Employee m=new Employee();
if(m instanceof Manager)
{
System.out.println("OK");
}
else
{
System.out.println("NO");
}
(3)
Employee e=new Manager();
if(e instanceof Employee)
{
System.out.println("OK");
}
else
{
System.out.println("NO");
}
6.final的使用总结:
(1)final修饰变量:说明该变量是一个常量,程序运行过程中不可以修改。
(2)final修饰方法:说明该方法在子类中不可以重写。
(3)final修饰类:说明该类不可以继承。同时该类中的方法全部为final.
7.动态绑定的置换原则:
程序中出现超类对象的任何地方都可以用子类的对象进行替换。
8.抽象类:
(1)当自身部分行为无法确定时(子类确定)时,可以把该类的方法设计为抽象方法,具有抽象方法的类称作抽象类。
(2) 抽象方法不可以实例化对象。但是抽象类可以定义抽象类变量。
(3) 使用abstract定义抽象类,同时抽象方法必须使用abstract修饰。
//抽象类的定义:
public abstract class Shape {
public Shape() {
}
public Shape(int x,int y,int w,int h)
{
this.pointx=x;
this.pointy=y;
this.weight=w;
this.hight=h;
}
protected int pointx;
protected int pointy;
protected int weight;
protected int hight;
//抽象方法的定义
public abstract void draw();
}
class Recenge extends Shape
{
public Recenge(int x,int y,int w,int h)
{
//调用父类的构造函数
super(x,y,w,h);
}
//父类方法的重写
public void draw()
{
System.out.println("RECENGE..........");
}
}
//继承父类
class Elipse extends Shape
{
public Elipse(int x,int y,int w,int h)
{
super(x,y,w,h);
}
public void draw()
{
System.out.println("Elipse..........");
}
}
class Graphics
{
//置换原则
public void draw(Shape s)
{
//JAVA中的动态邦定
s.draw();
}
public static void main(String[] args) {
Graphics g=new Graphics();
Shape s=new Elipse(10,20,10,10);
g.draw(s);
g.draw(new Recenge(10,10,10,10));
}
}
9.类的访问权限:
public protected 默认 private
(1)public :类的任何地方都可以进行访问:
(2)protected :类的内部和子类可以进行访问以及包内:
(3)默认:相同的包内可以访问。
(4)private: 类的内部可以进行访问。
10.Object类
(1)Object 类是所有的类的超类。
(2)从子类到超类是置换原则,从超类到子类需要强制类型转换。
(3)Object中的equals方法按照地址进行比较,因此通常情况下我们需要重写
equals()方法。
(4)hashCode()得到对象的散列码(默认是对象的存储地址)
(5)toString(): 返回该对象的字符串描述.
11.JAVA 中的容器:
(1)泛型数组:
ArrayList<T> list=new ArrayList<T>();
(利用数组实现的一种容器),存储必须是JAVA的类类型。只能 JDK1.5大版本中使用,1.4的使用方式:ArrayList list=new ArrayList();
(2)LinkedList<T> list=new LinkedList<T>();
利用链表实现的线性容器。
(3)TreeSet<T> set=new TreeSet<T>():利用红黑树实现的集合。集合内的所有的数据都是有序排列。
(4)HashSet<T>set=new HashSet<T>():利用哈希码实现的集合。集合内的数据都是有序排列的。
(5)HashMap<T1,T2>map=new HashMap<T1,T2>():利用哈希码实现的映射键值对。
(6)TreeMap<T1,T2>map=new TreeMap<T1,T2>():利用红黑树实现的映射键值对。
12.JAVA中的从键盘输入的使用:
(1)java.util.Scanner scanner=new java.util.Scanner();
jdk1.5后的版本使用
String str= scanner.next();
int i= scanner.nextInt();
(2)java.io.BufferedReader read=new java.io.BufferedReader(new InputStreamReader(System.in));
String str=read.readline();
(3)String str=javax.swing.JOptionPans.showInputDialog("输入字符串");
作业:
(1)如何从字符串转化为int类型
(2)如何从字符串转为为 double类型
(3)如何从double转化为String
(4)如何从int转化为String
(5)从键盘读数据,并存入到List类型中,然后移出第一个和最后一个,并进行输出。ArrayList,LinkedList
(6)使用TreeMap制作一个电话本系统。
(7)从键盘读取数据,并有序输出.