首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java基础温习-05

2012-12-23 
Java基础复习-05面向对象特征-21.抽象类抽象类其实就是一个包含了抽象方法的类,跟普通类没有本质的区别。对

Java基础复习-05
面向对象特征-2
1.抽象类
  抽象类其实就是一个包含了抽象方法的类,跟普通类没有本质的区别。
  对于抽象类,不能直接实例化;如果想使用抽象类, 必须使用子类。 子类继承抽象类,必须实现抽象类中的全部抽象方法。
  abstract和final二者只能出现一个。以为前者必须被继承,后者不能被继承。
  抽象类中可以有构造方法,但是该构造方法是不能直接调用的,交给子类去调用。

  包含抽象方法的类是抽象类,但是反过来,抽象类可以没有抽象方法,即便抽象类将所有的方法都实现了,没有抽象方法,它也不能直接实例化。

 

abstract class A{public A(){// 构造方法System.out.println("*************************") ;}public abstract void fun() ;};class B extends A{// 继承抽象类public B(){super() ;System.out.println("=========================") ;}public void fun(){// 覆写方法时需要注意访问控制权限System.out.println("Hello World!!!") ;}};public class AbstractDemo04{public static void main(String args[]){B b = new B() ;}};  

执行结果为:
*************************=========================


2.接口
  接口由全局常量和抽象方法组成。
 
interface A{// public static final String INFO = "CHINA" ;String INFO = "CHINA" ;// 全局常量// public abstract void print() ;void print() ;// 抽象方法public void fun() ;// 抽象方法}  

接口中,常量的默认是public stati final类型的,所以使用时可以不写这些修饰,接口会将一个常量直接修饰成那样。同理方法也是,默认就是public abstract类型的

3.二者关系,见下图。




4.深入讨论。
关于抽象类和接口的深入,参考详细解析Java中抽象类和接口的区别

5.Object类。
任何类都是继承自Object类,任何对象都可以使用Object对象接收。
对于任何一个类,都应该覆写Object类的一下三个方法。
5.1.toString()
class Person{private String name ;private int age ;public Person(String name,int age){this.name = name ;this.age = age ;}public String toString(){// 覆写了toString()方法 return "姓名:" + this.name + ",年龄:" + this.age ;}};public class StrTest{public static void main(String arg[]){System.out.println(new Person("张三",30)) ;}};

5.2.equals()
class Person{private String name ;private int age ;public boolean equals(Object obj){// 是完成对象的比较操作if(this==obj){// 两个地址相等return true ;}if(!(obj instanceof Person)){// 不是同一个类型return false ;}Person per = (Person)obj ;if(this.name.equals(per.name)&&this.age==per.age){return true ;}else{return false ;}}public Person(String name,int age){this.name = name ;this.age = age ;}public String toString(){// 覆写了toString()方法 return "姓名:" + this.name + ",年龄:" + this.age ;}};public class EquTest{public static void main(String arg[]){System.out.println(new Person("张三",30).equals("hello")) ;}};

5.3.hashCode()
toBeContinue

热点排行