`
windowboy
  • 浏览: 16455 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java类,对象,接口

 
阅读更多
   Java基础知识的类,对象,抽象类,接口的一个详细说明  
    类:主观抽象,是具有共同特性的对象的抽象,是对象的模板,可以实例化对象 
          定义格式 
            package basic.com.base;//包名
               import java.util.Date;//引入依赖包
                 public class Play {  
                       int a =0; //属性
                      Date data = null;//属性
                     //默认构造器
                     public Play(){}
                     //带参数构造器
                      public Play(String name){...}
                    //方法
                      public void method1(){...}
 
                 }
        定义属性:实例变量 
            格式:[ 修饰符 ]  类型 变量名  [ = ? ] 
            实例变量定义在类中,在方法体之外,受访问控制符限制。 
            实例变量有默认值:各种各样的初始值,基本数据类型初始为基本的数据类型的默认值,对象类型的默认为null。
            在如果有重名作用域,实例变量和局部变量出现有命名冲突, 采用“局部优先”原则。         
        定义方法 
            格式: [ 修饰符 ]  返回类型 方法名( 参数列表 ) [ throws  异常 ] { ······ }  
            java中所有参数都是值传递。 
            当没有值返回时,返回类型必须被定义为void。         
        构造器 
            在创建对象的过程中调用的方法。 
            构造器没有返回类型。 
            构造器的名字与类名相同。 
            格式为:[ 修饰符 ]  类名( 参数列表 ){  },修饰符可以是private、 protected、 default,public
            构造函数是提供对象创建,如果定义访问权限很小的构造函数,要考虑期初始的场景
            在一个对象的生成周期中构造器只用一次,当类没有提供一个构造器,系统会自动提供一个无参的构造器。 
            获得对象的方式: 
                通过new(在堆空间中申请分配空间),new 类名(),可以通过这种形式创建一个对象,
                 这时的对象是无法使用,必须把他的地址存放进一个对象变量才能够使用。 
                例如 : 
                    Person c=new Person(); 
            建议:定义一个类的时候,保留一个无参的构造器       
                         
        另外在类中注意一个this关键字: 
         1.在方法体重,this是个隐式参数,代表当前对象; 
           publie class Person{ 
                private String name; 
                public void setName(String name){ 
                     this.name=name;        //this.name为了区分两个name,为当前对象的成员变量 
                  } 
             } 
          2.在构造函数中使用this
              public class Play {
                  //带参数构造器
                  public Play(String name){
                       System.out.println("name===" + name);   
                   }   
                   public Play(String name,int age){
                          this(name); //this 代表这个类的构造方法,这个this(...)必须放在改构造器第一行
                          System.out.println("2=====");
                   }   
                  public static void main(String[] args) {
                         Play play = new Play("ddd",30);
                   }
 
               }
     注意: this不能出现在静态方法里面。          
 类、对象、实例三者的关系 
     类:是对象的模板,可以实例化对象 
     对象:类的个体 
     实例:实现的对象 
     Person p;  //根据模板可以定义很多的对象,都有Person的属性,例如 Person  a,b,c;  
     p=new Person(); 
     其中 Person 为类,p为对象,new Person()为实例,p 赋值后也是实例了。 
 
方法重载Overloading): 
    方法重载是Java多态一个表现,多个同名函数同时存在,具有不同的参数个数/类型
    注意:如果参数类型和个数都一样,不能只以返回值的差异来实现重载,一定要参数个数或者类型不一样
方法的重写Overriding
     1>.父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的
     名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,
     而不需要重新编写相同的方法。
     2>.若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,
        则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字.
     3>.子类函数的访问修饰权限不能少于父类的,对于定义的异常,子类抛出的异常类一定是父类的异常类的子类。
封装 
    类的属性加private修饰符,来限制只能够在类的内部进行访问,有效的保护数据。 
    对于类中的私有属性,要对其给出一对方法getXxx(),setXxx()访问私有属性,保证对私有属性的操作的安全性。 
    方法公开的是方法的声明,即只须知道参数和返回值就可以调用该方法,隐藏方法的实现的细节。 
    一个对象和外界的联系应当通过一个统一的接口,应当公开的公开,应当隐藏的隐藏。 
    放开读数据操作,限制写操作    
继承: 子类继承父类除private之外的属性和方法 
       一般就是把公用的属性,也就是共性形成一个父类,其他的个性的形成各自的子类 
    Java只支持单继承:一个类最多只有一个直接的父类。 
   1.方法覆盖: 
        方法名:相同 
        参数表:相同 
        访问限制符:相同或者更宽 
        返回值类型:相同或者子类返回的类型是父类返回的类型的子类(在JDK5.0以后) 
        抛出的异常:不能比父类更宽。    
     2.super关键字: 
        super()表示调用父类的构造器 
        super()也和this()一样必须放在方法的第一句 
        super()和this()不能同时出现          
        super可以屏蔽子类属性和父类属性重名时带来的属性遮盖,super. 表示调用父类的方法或属性 
        在子类的构造器中如果没有指定调用父类的哪一个构造器,那么就会调用父类的无参构造器,即super()       
    注意: 
        父类的构造器不能被子类继承 
        方法和属性可以被继承,权限不限制能否继承过来,子类的权限要大于父类的权限 
        先构造父类,后构造子类,先this后super          
多态 
    多态是一种运行期的行为

    父类型的引用可以指向子类型的对象。

  比如 Parent p = new Child();

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;

  如果有,再去调用子类的该同名方法

    注意:静态static方法属于特殊情况,静态方法只能继承,不能重写Override,
     如果子类中定义了同名同形式的静态方法,它对父类方法只起到隐藏的作用。
      调用的时候用谁的引用,则调用谁的静态方法
      如果想要调用子类中有而父类中没有的方法,需要进行强制类型转换  
//编译错误
        //用父类引用调用父类不存在的方法
        //Animal a1 = new Cat();
        //a1.eat();
        
        //编译错误
        //向下类型转换时只能转向指向的对象类型        
        //Animal a2 = new Cat();
        //Cat c2 = (Dog)a2;
    多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,
                做出通用的编程,以适应需求的不断变化。 
 抽象类:abstract修饰类: 
        1.会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,
           也就是编译时类型 
        2.抽象类就相当于一个类的半成品,需要子类继承并覆盖其中的抽象方法,这时子类才又创建实例的能力,
           如果子类没有实现父类的抽象方法,那么子类也要为抽象类。 
        3.可以有自己的数据成员,也可以有非 abstract的成员方法
                抽象类
                public abstract class SuperTmp {
                       public void work(){
                          System.out.println("===work");
                        }   
                       public abstract void say();
 
                }
               实现类
               public class Sub extends SuperTmp{
                  @Override
                   public void say() {
                        System.out.println("====sub say==");   
                    }   
                  public void happy(){
                        System.out.println("===happy===");
                   }
                }
              在调用的时候注意
               SuperTmp tmp = new Sub();
               tmp.say();//只能调用抽象类的方法,不能调用实现类的方法,tmp.happy(),编译会报错

    abstract修饰方法: 
        1.实现部分以";"代替,需要子类继承实现。 
        2.抽象方法代表了某种标准,定义标准,定义功能,在子类中去实现功能(子类继承了父类并需要给出从
            父类继承的抽象方法的实现)。 
        3.方法一时间想不到怎么被实现,或有意要子类去实现而定义某种标准,这个方法可以被定义为抽象。 
    注意: 
        有抽象方法的类一定是抽象类。但是抽象类中不一定都是抽象方法,也可以全是具体方法。
 
 接口因为java不支持多重继承,所以有了接口,一个类只能继承一个父类,但可以实现多个接口,
       接口本身也可以继承多个接口。
       1.接口里面的成员变量默认都是public static final类型的。必须被显示的初始化,不能修改

       2.接口里面的方法默认都是public abstract类型的。。

       3.接口没有构造方法,不能被实例化。

       4.接口不能实现另一个接口,但可以继承多个接口。

       5.类如果实现了一个接口,那么必须实现接口里面的所有抽象方法,否则类要被定义为抽象类

       那么接口和抽象的汇总

          1 接口只能包含抽象方法,抽象类可以包含普通方法,或者private方法,接口不能定义private方法。 
          2 接口只能定义静态常量属性,抽象类既可以定义普通属性,也可以定义静态常量属性。 
          3 接口不包含构造方法,抽象类里可以包含构造方法。     

              抽象类不能被实例化,但不代表它不可以有构造函数,抽象类可以有构造函数,备继承类扩充

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

分享到:
评论

相关推荐

    java对象与接口详解

    通过学习抽象类和接口,开发者可以更好地利用 Java 的面向对象特性,实现更灵活、可扩展的代码结构。在设计系统时,合理地使用抽象类和接口,可以提高代码的复用性和可维护性,使得程序更加健壮和易于理解。

    JAVA类与对象及数组习题

    JAVA类与对象及数组习题 JAVA类和对象及数组是JAVA编程语言的基础概念。下面是关于JAVA类和对象及数组的习题,涵盖了构造方法、继承、多重继承、变量声明、数组初始化等方面的知识点。 1. 构造方法的调用方式: ...

    JAVA 教学 PPt(接口,类和对象尤其详尽)

    【JAVA 教学 PPt(接口,类和对象尤其详尽)】 在Java编程语言中,接口、类和对象是核心概念,对于理解和构建复杂的软件系统至关重要。让我们深入探讨这些主题。 1. 接口(Interface): Java中的接口是一种完全...

    Java多态和实现接口的类的对象赋值给接口引用的方法(推荐)

    Java的多态性是面向对象编程的一个核心特性,它允许我们使用父类(或接口)的引用指向子类(或实现接口的类)的对象。这样做的好处在于代码的灵活性和可扩展性,使得程序能够处理多种不同的对象类型,而不必关心具体...

    Java SE程序 接口用对象数组实现

    Java SE程序 接口用对象数组实现Java SE程序 接口用对象数组实现Java SE程序 接口用对象数组实现Java SE程序 接口用对象数组实现Java SE程序 接口用对象数组实现Java SE程序 接口用对象数组实现Java SE程序 接口用...

    Java面向对象程序设计课后答案全解

    1. **类与对象**:Java中的基本构建块是类,它代表了现实世界中的事物或概念。对象则是类的实例,具有类定义的属性和行为。学习如何创建和使用类及对象,是理解Java面向对象编程的关键。 2. **封装**:封装是面向...

    \\java类、抽象类、接口、继承和对象解析 .doc

    Java 类、抽象类、接口和继承是面向对象编程的核心概念,它们构成了 Java 语言的基石。在 Java 中,类是用来封装数据和行为的结构,而对象则是类的实例,具有具体的属性和行为。 1. **类与对象的区别** 类是模板...

    java资料类,对象和接口

    Java是一种面向对象的编程语言,它的核心概念包括类(Class)、对象(Object)和接口(Interface)。在这次实验中,我们将深入理解这三个概念,并通过实际的代码示例来加深理解。 1. 类(Class): 类是Java中的...

    Java 接口和抽象类

    Java 编程语言提供了两种机制来实现面向对象编程的多态性:接口和抽象类。这两种机制使得 Java 应用开发具有灵活性和敏捷性。 抽象类 抽象类是一种特殊的类,它不能被实例化,不能被直接使用,而是作为其他类的...

    Java课件\第三讲___Java中类、对象、接口

    本节将深入探讨Java中类、对象、接口以及包的概念。 1. **类的基本概念** 类是面向对象编程的核心,它是对现实世界中具有相似特性和行为的事物的抽象。类定义了一组属性(状态)和方法(行为),这些属性描述了...

    java类及接口

    在Java编程语言中,类和接口是核心概念,它们构成了程序设计的基础。API(Application Programming Interface)则是一系列预先定义的函数、类、接口和其他工具,开发者可以利用这些工具来创建应用程序。在这个“java...

    金蝶接口对接java工具类.zip

    4. **数据转换**:接口返回的数据通常需要解析为Java对象,可以使用Gson、Jackson等库进行JSON到Java对象的映射。 5. **性能优化**:考虑使用缓存策略,减少不必要的请求;如果接口调用频繁,可能需要考虑异步调用...

    Java面向对象程序设计

    10. **集合框架**:Java集合框架包括List、Set、Queue和Map等接口及其实现类,如ArrayList、HashSet、LinkedList等,提供了一种高效管理对象数组的方式。 11. **内部类**:Java支持类的嵌套,包括成员内部类、局部...

    Java实例化一个抽象类对象的方法教程

    因为Java的代理机制是基于接口的,它不能直接创建继承自抽象类的代理对象。但如果你想要创建一个与抽象类有关的代理对象,可以借助第三方库如Javassist或ByteBuddy等字节码工具。这些库允许你在运行时动态生成类,...

    JAVA接口规范.doc

    这类接口通常用于获取某个特定对象的详细信息,例如用户登录时获取用户个人信息。请求格式包括URL、HTTP方法(通常是GET或POST)以及可能的请求头。参数说明应详细列出需要客户端提供的数据,如登录时的用户名和密码...

    Java面向对象程序设计+源代码+课后习题答案)

    10. 集合框架:Java集合框架包括List、Set、Queue等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类,提供了存储和操作对象的容器。 课后习题答案部分提供了针对这些概念的实践练习,帮助学习者巩固...

    Java对象Serializable接口实现详解

    Java对象Serializable接口实现详解 Java中的Serializable接口是java.io包中定义的,用于实现Java类的序列化操作而提供的一个语义级别的接口。Serializable序列化接口没有任何方法或者字段,只是用于标识可序列化的...

    12-Java面对对象高级(中)

    这个主题涵盖了对象的多态性、抽象类、接口、适配器设计模式以及工厂设计模式等核心概念。下面将对这些关键知识点进行详细的阐述。 首先,**多态性**是面向对象编程的三大特性之一,其余两个是封装和继承。多态性...

    Educoder题目:Java面向对象 - String类答案解析.md

    Educoder题目:Java面向对象 - String类答案解析

    java 接口练习作业

    3. 使用集合接口(如List或Set)存储实现接口的类对象,并进行操作。 4. 可能会涉及接口的多实现,即一个类实现多个接口。 5. 探索并实现集合接口的一些高级特性,如排序、迭代等。 在解决这些练习时,你需要理解...

Global site tag (gtag.js) - Google Analytics