java基础知识-对象和类

前言:java

  由于要准备Java面试,全部将java基础知识点从新复习一遍,主要笔记来源于菜鸟教程和java核心技术的书籍中,也有一些博客上的资料(这些只供我我的学习使用)面试

                    

Java 对象和类

  • 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • :类是一个模板,它描述一类对象的行为和状态。

  下图中男孩女孩为类,而具体的每一个人为该类的对象:sql

   

一、Java中的对象

  如今让咱们深刻了解什么是对象。看看周围真实的世界,会发现身边有不少对象,车,狗,人等等。全部这些对象都有本身的状态和行为。数组

  拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。网络

  对比现实对象和软件对象,它们之间十分类似。数据结构

  软件对象也有状态和行为。软件对象的状态就是属性,行为经过方法体现。app

  在软件开发中,方法操做对象内部状态的改变,对象的相互调用也是经过方法来完成。dom

二、Java中的类 

  类能够当作是建立Java对象的模板。函数

  经过下面一个简单的类来理解下Java中类的定义:工具

  

 1 public class Dog{  2  String breed;  3   int age;  4  String color;  5   void barking(){  6  }  7  
 8   void hungry(){  9  } 10  
11   void sleeping(){ 12  } 13 }

  一个类能够包含如下类型变量:

  • 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
  • 成员变量:成员变量是定义在类中,方法体以外的变量。这种变量在建立对象的时候实例化。成员变量能够被类中方法、构造方法和特定类的语句块访问。
  • 类变量:类变量也声明在类中,方法体以外,但必须声明为static类型。

  一个类能够拥有多个方法,在上面的例子中:barking()、hungry()和sleeping()都是Dog类的方法。

三、构造方法  

  每一个类都有构造方法。若是没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。

  在建立一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类能够有多个构造方法

  构造方式示例:  

1 public class Puppy{ 2     public Puppy(){ 3  } 4  
5     public Puppy(String name){ 6         // 这个构造器仅有一个参数:name
7  } 8 }

四、建立对象  

  对象是根据类建立的。在Java中,使用关键字new来建立一个新的对象。建立对象须要如下三步:

    •  声明:声明一个对象,包括对象名称和对象类型。
    •  实例化:使用关键字new来建立一个对象。
    •  初始化:使用new建立对象时,会调用构造方法初始化对象。

    示例   

 1 public class Puppy{  2    public Puppy(String name){  3       //这个构造器仅有一个参数:name
 4       System.out.println("小狗的名字是 : " + name );  5  }  6    public static void main(String []args){  7       // 下面的语句将建立一个Puppy对象
 8       Puppy myPuppy = new Puppy( "tom" );  9  } 10 }

编译后结果为:小狗的名字是 : tom

五、访问实例变量和方法

  经过已建立的对象来访问成员变量和成员方法,以下所示:  

     /* 实例化对象 */ ObjectReference = new Constructor(); /* 访问其中的变量 */ ObjectReference.variableName; /* 访问类中的方法 */ ObjectReference.MethodName();

  实例

    下面的例子展现如何访问实例变量和调用成员方法:  

 1 public class Puppy{  2    int puppyAge;  3    public Puppy(String name){  4       // 这个构造器仅有一个参数:name
 5       System.out.println("小狗的名字是 : " + name );  6  }  7  
 8    public void setAge( int age ){  9        puppyAge = age; 10  } 11  
12    public int getAge( ){ 13        System.out.println("小狗的年龄为 : " + puppyAge ); 14        return puppyAge; 15  } 16  
17    public static void main(String []args){ 18       /* 建立对象 */
19       Puppy myPuppy = new Puppy( "tom" ); 20       /* 经过方法来设定age */
21       myPuppy.setAge( 2 ); 22       /* 调用另外一个方法获取age */
23  myPuppy.getAge( ); 24       /*你也能够像下面这样访问成员变量 */
25       System.out.println("变量值 : " + myPuppy.puppyAge ); 26  } 27 }

编译并运行上面的程序,产生以下结果:小狗的名字是 : tom  小狗的年龄为 : 2  变量值 : 2

六、源文件声明规则

  当在一个源文件中定义多个类,而且还有import语句和package语句时,要特别注意这些规则。

一个源文件中只能有一个public类

一个源文件能够有多个非public类

源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。

若是一个类定义在某个包中,那么package语句应该在源文件的首行。

若是源文件包含import语句,那么应该放在package语句和类定义之间。若是没有package语句,那么import语句应该在源文件中最前面。

import语句和package语句对源文件中定义的全部类都有效。在同一源文件中,不能给不一样的类不一样的包声明。

  类有若干种访问级别,而且类也分不一样的类型:抽象类和final类等。这些将在访问控制章节介绍。

  除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。

七、Java-包(package)

  包是Java语言提供的一种区别类名字命名空间的机制,它是类的一种文件组织和管理方式、是一组功能类似或相关的类或接口的集合。

  Java package提供了访问权限和命名的管理机制,它是Java中很基础却又很是重要的一个概念。

  1、包的做用 
    1 把功能类似或相关的类或接口组织在同一个包中,方便类的查找和使用。 

    2 如同文件夹同样,包也采用了树形目录的存储方式。同一个包中的类名字是不一样的,不一样的包中的类的名字是能够相同的,当同时调用两个不一样包中相同类名的类时,

    应该加上包名加以区别。所以,包能够避免名字冲突。 

    3 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

  2、包的定义 
    在一个.java文件中能够一个public类和多个非public类,若是要将这些类组织在一个包当中,则在.java文件中除注释之外的第一行使用关键字package便可实现。

    当须要调用此包中的类时,就可使用关键字import进行导入。在定义包的时候,应该注意几点: 

      1 为了尽可能使包名保持惟一性,包名一般采用小写、按倒写互联网址的形式进行定义。如:com.hank.www表示包文件放置的文件路径为com/hank/www。 

      2 在进行命名包时,应该避免使用与系统发生冲突的名字,如java.lang、java.swing等。

  3、包与包之间的访问  

 1 package cn.itstu;  2 class PackageDemo  3 {  4     /* 
 5  将源文件编译打包到C:\myclass 文件夹下  6     */  
 7     public static void main(String args[])  8  {  9         /* cmd输入命令 10  1.javac -d c:\myclass DemoA.java 11  2.set classpath=c:\myclass 12  3.javac -d c:\myclass PackageDemo.java 13  4.java cn.itstu.PackageDemo 14         */  
15         packa.DemoA d=new packa.DemoA(); 16  d.show(); 17   
18         //packb.DemoB b=new packb.DemoB(); 19         //b.method(); error 访问权限不够 
20  } 21 } 
 1 package packa;  2 public class DemoA extends packb.DemoB //类的权限必须是public 
 3 {  4       
 5         public void show()//方法的权限也必须是public 
 6  {  7             System.out.println("demoa show run");  8  method();  9  } 10       
11 }  
 1 package packb;  2 public class DemoB  3 {  4   /* public */ protected void method()  5  {  6        System.out.println("demob method run");  7  }  8   
 9     /*当method方法被public修饰,能够被其子类DemoA访问, 10  也能够被其余包的类访问,可是当method方法被protected 11  修饰,method方法只能被其子类访问。 12  * 
   结论:
    1. 包与包之间进行访问,被访问的包中的类以及类中的成员,须要public修饰。
    2. 不一样包中的子类还能够直接访问父类中被protected权限修饰的成员。
    3. 包与包之间可使用的权限只有两种,public  protected。

 

               public       protected      default         private
        同一类中    OK             OK                OK                 OK
        同一包中    OK             OK                OK                 NO
        子类            OK             OK                NO                 NO
        其余类中    OK             NO                NO                 NO
 

  4、导包 import 

经过import咱们能够简化类名的书写。
包名咱们通常用url,由于url具备惟一性。如: package com.qq.demo;
 导包:import com.qq.demo.*;  //*是通配符,表示导入com.qq.demo包下的全部类,开发中推荐使用导入具体类名,须要哪一个类导入哪一个,能够节省内存开销,如:
import com.qq.demo.ClassA;
注意:咱们导入两个包 import packa.*;   import packb.*;  若是这两个包中有相同的类classA存在,咱们在使用类的时候必须指明使用哪一个包下的该类
如  :packa.ClassA  a=new packa.ClassA();
       packb.ClassA  b=new packb.ClassA();
 

五:系统经常使用包

 

一、Java.lang包:java的核心类库,包含了运行java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包 
二、java.io包:java语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出、过滤输入/输出流等等 
三、java.util包:Java的实用工具类库Java.util包。在这个包中,Java提供了一些实用的方法和数据结构。例如,Java提供日期(Data)类、日历(Calendar)类来产生和获取日期及时间,提供随机数(Random)类产生各类类型的随机数,还提供了堆栈(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构。包含如处理时间的date类,处理变成数组的Vector类,以及stack和HashTable类

四、java.util.zip包:实现文件压缩功能 
五、java.lang.reflect包:提供用于反射对象的工具 
六、java.awt.image包:处理和操纵来自于网上的图片的java工具类库 
七、java.wat.peer包:不多在程序中直接用到,使得同一个java程序在不一样的软硬件平台上运行 
八、java.applet包 
九、java.NET包:实现网络功能的类库有Socket类、ServerSocket类 
十、java.corba包和java.corba.orb包 
十一、java.awt.datatransfer包:处理数据传输的工具类,包括剪贴板,字符串发送器等

十二、java.awt包:构建图形用户界面(GUI)的类库,低级绘图操做Graphics类,图形界面组件和布局管理如 Checkbox类、Container类、LayoutManger接口等,以及界面用户交互控制和事件响应,如Event类 
1三、java.awt.event包:GUI事件处理包。 
1四、java.sql包:实现JDBC的类库。

相关文章
相关标签/搜索