JAVA学习笔记——JAVA基础语法(四)

一、对象转型

  1、向上转型:父类的引用指向子类的对象(父类的引用指向子类的对象的时候不能使用子类多出来的成员)

  2、向下转型:简单一句话其实就是强制类型转换

二、toString()

  默认调用情况:1、使用System.out.println()   控制台上只显示字符串,所以在打印之前要先转换成字符串类型再输出

         2、当出现使用‘+’号连接字符串的时候

  toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。

  在自己写的类中建议重写toString()方法,这样有时候会使我们的程序更加简洁输出界面更加美观

  如下程序重写的toString()方法使得程序输出更加美观:程序中规定了toString的输出方式,使得程序的输出美观

public class test{
    public static void main(String[] args){
        Person p1 = new Person("jack",34);
        Person p2 = new Person("tom",21);
        
        System.out.println(p1);
        System.out.println(p2);

    }
}

class Person{
    Person(String name,int age){
        this.name = name;
        this.age = age;
    }
    
    String name;
    int age;
    public String toString(){
        return ("name is:" + name + "  age is:"+ age);
    }
}

三、“==”和equals的区别以及使用方法

  “==”比较的栈区的内容;而equals比较的是堆区的内容

  一般我们在写一个类的时候最好是重写equals方法,这样的话可以满足用户自己的需要来进行对象之间的比较,用以实现用户的相关功能

   但是如果我们重写了equals的方法也一定要重写hashCode()方法

    相等的对象一定有相等的哈希码  相等的哈希码不一定有两个相等的对象(因为内存中有相同的哈希码的一片区域可以有很多个对象)

  例如一下程序重写的equals方法:我们可以自己规定equals的比较方法

public class test{
    public static void main(String[] args){
        Person p1 = new Person("jack",21);
        Person p2 = new Person("tom",23);

        System.out.println(p1.equals(p2));
    }
}

class Person{
    Person(String name,int age){
        this.name = name;
        this.age = age;
    }
    
    String name;
    int age;
    public boolean equals(Object obj){
        Person p = (Person)obj;
        if(this.name.equals(p.name)){
            return true;
        }else{
            return false;
        }
    }
  public int hashCode(){
    return this.name.hashCode();
} }

四、final关键字

  1、加在成员变量上,表示常量

  2、加在方法上,表示不能被重写

  3、加在类上,表示不能被继承

五、abstract(抽象的)

  1、加在类上,不能实例化(不能创建对象)

  2、一个类是用来被继承的,比如说多态的时候父类的引用指向子类的对象的时候,父类不需要实例化

  3、抽象的方法就是用来被重写的,并且方法是抽象的那么类也必须是抽象的

  4、抽象的类中可以有抽象的方法也可以有非抽象的方法

六、interface(接口)

   1、接口就是一种特殊的抽象的类(只有抽象方法和常量)

  2、它就是一种规范标准

  3、接口称之为类实现了接口,方法也称之为实现

  4、接口与类之间叫实现,接口之间叫继承,接口可以有多个,父类只能有一个,

  方法都是默认的 public abstract类型   常量默认都是public fianl static

  一下程序详细的描述了接口的几大特征的呈现:

public class test{
    public static void main(String[] args){
        Animel animel = new Animel();
        animel.catching();
        animel.sleep();
        animel.run();
    }
}

interface cat{    //写一个接口
  public void catching();
}

interface mouse{
    public void run();  //这是一个抽象方法
}

interface dog{
    int num = 10;        //  一个抽象的常数  其详细的表示方法为:public fianl static int num = 10;
    public void see();
}

interface pig extends cat,mouse,dog{   //多继承,接口之间继承可以有多个
    public void sleep();
}

class Animel implements pig{     //类与接口之间为实现  只允许有一个父类
     public void catching(){
         System.out.println("cat is catching");
     }
     public void run(){
         System.out.println("mouse is running");
     }
     public void sleep(){
         System.out.println("pig is sleeping");
     }
     public void see(){
         System.out.println("dog is see");
     }
}

 

posted @ 2013-01-30 00:53  bod08zhongkewen  阅读(899)  评论(0编辑  收藏  举报