一、JavaBean——可重用组件

1.JavaBean是指符合以下标准的Java类

(1)类是公共的

(2)有一个无参的公共的构造器

(3)有属性,且有对应的get、set方法

2.好处

用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一个随时随地的复制和黏贴的功能,而不能关心任何改变。  

二、包——package

1.作用:对类文件进行分类管理;给类文件提供多层名称空间;一般包的出现是为了区分重名的类,所以包名要尽量唯一

2.注意事项

包名的所有字母都要用小写。

三、访问权限修饰符public 、 private 、 protected 、 default(默认,即没有修饰符)

1.访问权限大小

public:任何地方

protected:类内部、同一个包内、子类

default:类内部、同一个包内

private:类内部

2.注意事项

对于class的权限修饰只能是public或者default,public类可以在任何地方被访问,default类只可以被同一个包内的类访问。

四、多态

1.体现

(1)方法的重载和重写 (2)子类对象的多态性(父类的引用或者接口的引用指向了自己的子类的对象)//Person p = new Man();

2.好处

提高了程序的拓展性。比如在方法中形参的类型用父类类型,通过多态可以直接传进子类的对象。

3.弊端

当父类引用指向子类对象时,虽然提高了扩展性,但只能访问父类具有的方法,不可以访问子类特有的方法。

4.特点

(1)子类对象的多态性使用的前提:要有类的继承;要有子类对父类方法的重写

(2)程序运行时分为编译状态和运行状态。(编译时不创建对象,只检查语法错误

    对于多态性来说,编译时,看“左边”,将此引用变量理解为父类的类型,因此无法访问子类特有的方法

    执行时,看“右边”,关注真正对象的实体,即子类的对象,那么执行的方法是子类重写的。

(3)子类对象的多态性,并不适用于属性,即调用的都是引用变量所属的类中的属性。

5.强制类型转换

(1)想要访问子类特有的方法,可以通过强转符:() 将父类对象强制向下转换成子类引用。//Man m = (Man)p;

(2)判断对象是哪个具体的子类类型,可以使用instanceof关键字,格式:对象 instanceof 类型,返回一个boolean值。// if ( p instanceof Man)

 instanceof可以判断对象是否实现了指定的接口或继承了指定的类。                             //  Man m  = (Man)p;

6.代码案例

  class Test{
     
     public static void main(String[] args){
         Test t = new Test();
         t.method(new Animal());
         System.out.println("========");
         t.method(new Dog());
         System.out.println("========");
         t.method(new Cat());
     }
     
     public void method(Animal a){//通过多态性,使父类引用可以指向子类对象
         System.out.println(a.number);//输出1,说明调用的是Animal类中的number
         a.eat();
         a.run();
         if(a instanceof Dog){
             Dog d = (Dog)a;//强制向下转换,才能调用子类特有的bake方法
             d.bake();
         }
         if(a instanceof Cat){
             Cat c = (Cat)a;
             c.bake();
         }
     }
 }
 
 class Animal{
     int number = 1;
     
     public void eat(){
         System.out.println("吃东西");
     }
     public void run(){
         System.out.println("走路");
     }
 }
 
 class Dog extends Animal{
     //创建父类同名变量number
     int number = 2;
     //重写父类eat和run方法
     public void eat(){
         System.out.println("吃狗粮");
     }
     public void run(){
         System.out.println("狗爬中");
     }
     public void bake(){
         System.out.println("汪汪叫");
     }
 }
 
  class Cat extends Animal{
     int number = 3;
     
     public void eat(){
         System.out.println("吃猫粮");
     }
     public void run(){
         System.out.println("走猫步");
     }
     public void bake(){
         System.out.println("喵喵叫");
     }
 }
 

五、object——所有Java类的根父类

1.equals方法

(1)格式:boolean equals(Object obj)

(2)特点

A:只能处理引用类型变量,不能处理基本数据类型变量

B:在Object类中,equals()方法比较的是两个引用变量的地址值是否相等

C:像String类、包装类、FIle类、Date类等这些类重写了Object类的equals()方法,比较的是两个对象的“实体内容”是否完全相同。 

2.toString方法

(1)格式:public String toString();返回值:getClass().getName() + "@" + Integer.toHexString(hashCode())

(2)注意事项

A:当我们直接打印一个对象的引用时,实际默认调用的就是这个对象的toString()方法

B:当我们打印的对象所在的类没有重写Object中的toString方法时,调用的是Object类中定义的toString方法,返回此对象所在的类的类名及对应的堆空间中对象实体的首地址值。

C:可以通过对Object的toString方法的重写,使对象对应的字符串内容有意义。