上周考试错题总结(构造方法, 抽象类)

简介: 上周考试错题总结(构造方法, 抽象类)

构造方法:

总体分为两大类, 含参构造方法, 空参构造方法.

是什么:在某些类的对象被创建的开始, 需要某种具体的方法对其中的数据进行一个初始化的行为, 或者是描述创建的对象的一些状态;

空参构造方法:    

         

 public class study{
            public study(){
    }
}


       //其中空参构造方法, 以及含参构造方法的名称都需要跟相应的类名称相同

       //空参构造方法的部内部可以书写一些对于创建类的一些状态, 直接进行输出进行描述

       

   使用方法, 在主方法当中直接进行创建对象

 main:
    study people= new study();

//结果:直接会显示空参构造方法当中的执行语句, 或者是不进行任何的显示,跟Scanner 的创建一个道理, 只不过在Scanner 当中的空参构造方法没有任何的描述

   含参构造方法{

 

 public class study{
        private String name;
        private int age;
        public study(String name, int age){
        this.name=name;
        this.age=age;
}
}

     //使用this的目的是为了给用户输入的姓名, 以及相应的年龄都赋值给相应的全局变量当中, 以便于后来get方法的直接使用


   使用方法:在主方法当中创建对象, 然后进行初始化具体的值

   main:

  study people=new study(姓名,年龄);
    System.out.println(people.name+"  "+people.age);

  //直接获得相应的姓名以及年龄构造方法的重载问题:

       构造方法和方法是类似的,他也可以重载。其重载的方法很简单,就是只要提供不一样的参数即可,编译器就会去通过不同的参数找到对应的构造方法

public class study implements{
        private String name;
        private int age;
        public study(String name, int age){
        this.name=name;
        this.age=age;
}
        //参数不一样,类型
        public study(String name){
        this.name=name;
 
}
}
}
        main:
    study people=new study(姓名,年龄);
    study people1=new study(姓名);
    System.out.println(people.name+"  "+people.age+"   "+people1.age);

抽象类:

是什么?

在面向对象当中, 所有的对象都是通过类来进行实现的, 但是反过来并不成立, 并不是所有的对象都能够对于类进行描述


其中存在一种类, 其中的代码无法对于一个对象进行一个完整的描述, 只是对于部分进行描述, 并不完整, 这样的类被称作是:抽象类


同时, 需要注意的是, 抽象类是无法进行实例化的, 所以通常需要一个实现类来进行相应的实现才可以进行调用. 在进行创建之前就要想好要不要进行创建抽象类(关键看有没有相同的需要进行

使用的"方法",需不需要创建相应的抽象)


但抽象类除了一部分无法跟平常的类一样进行描述外, 其他类能够做的抽象类也都能完成, 构建方法, 成员变量, 成员方法都能够照常的进行创建, 除此之外, 还能够进行创建抽象方法(抽象方法必须存在抽象类当中, 但是抽象类当中并不一定是有抽象方法的)


为什么?(怎样的情况下考虑创建抽象类)


对于不同的对象, 他们的"行为"可能是有所不一样的, 但是总的来说,这些的行为都能够归属于一个的类型当中

举个例子

对于所有的和尚

他们都有一个行为,在寺庙当中的活动    但是唐三藏的活动是念经, 而鲁智深的活动是吃肉, 都是在寺庙当中的活动,但是行为方式是不一样的

对于共有的方式, 行为, 我们就可以创建一个抽象类当中的抽象方法,让各自的"唐三藏" "鲁智深" 两个类进行方法的重写即可, 而且必须进行重写, 不然就是错误的!

也避免了漏写这种情况的发生, 让代码保证是完整的, 完整性

怎么用?

抽象类的创建:直接在相应正常的"范围"后加入一个"abstract"即可

public abstract class study{
//*****
}

在抽象类当中的构造方法, 以及成员变量, 成员方法的构造方式跟正常的类相同, 除了抽象方法的创建

public abstract class Employee
{
   private String name;
   private String address;
   private int number;
   
   public abstract double computePay();
   
   //其余代码  get set...
}

//实现类

public class Salary extends Employee
{
   private double salary; // Annual salary
  //相当于在实现类当中创建了一个父类,抽象类当中没有的成员变量进行使用
 
//在上一个的抽象类当中完成了对于computer()这个类的设置为抽象方法, 所以实现类必须要进行相应的重写方法
 
//在此还是一个double类型的,所以必须进行返回相应类型的数值
 
   public double computePay()
   {
      System.out.println("Computing salary pay for " + getName());
      return salary/52;
   }
 
   //其余代码
}

抽象类所有注意事项:

1.抽象类本身是没有办法直接对于自己进行实例化的, 必须需要一个实现类才可以!

2.抽象类当中不一定包含抽象方法, 但是抽象方法一定是存在于抽象类当中的, 两者是充分不必要条件

3.在抽象类当中输入的抽象方法, 一定需要在子类当中进行重写, 除非这个类也是一个相应的抽象类

4.抽象方法当中不需要添加任何的方法体, 也就是对于这个类的具体实现方法

相关文章
|
算法 编译器 程序员
类与对象知识总结+构造函数和析构函数 C++程序设计与算法笔记总结(二) 北京大学 郭炜(下)
类与对象知识总结+构造函数和析构函数 C++程序设计与算法笔记总结(二) 北京大学 郭炜(下)
74 0
|
算法 安全 程序员
类与对象知识总结+构造函数和析构函数 C++程序设计与算法笔记总结(二) 北京大学 郭炜(上)
类与对象知识总结+构造函数和析构函数 C++程序设计与算法笔记总结(二) 北京大学 郭炜(上)
59 0
|
5月前
|
Java
上周考试错题类型总结(接口型)
上周考试错题类型总结(接口型)
|
6月前
【错题集-编程题】游游的水果大礼包(枚举)
【错题集-编程题】游游的水果大礼包(枚举)
【错题集-编程题】游游的水果大礼包(枚举)
|
6月前
|
C++ 芯片
【期末不挂科-C++考前速过系列P4】大二C++实验作业-继承和派生(3道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P4】大二C++实验作业-继承和派生(3道代码题)【解析,注释】
猿创征文|【C++之友元函数与友元类】输出年龄
猿创征文|【C++之友元函数与友元类】输出年龄
|
存储 Java API
学会反射后,我被录取了!(干货)一
反射是一个非常重要的知识点,在学习Spring 框架时,Bean的初始化用到了反射,在破坏单例模式时也用到了反射,在获取标注的注解时也会用到反射······
95 0
学会反射后,我被录取了!(干货)一
|
监控 Java 关系型数据库
学会反射后,我被录取了!(干货)二
反射是一个非常重要的知识点,在学习Spring 框架时,Bean的初始化用到了反射,在破坏单例模式时也用到了反射,在获取标注的注解时也会用到反射······
76 0
学会反射后,我被录取了!(干货)二
|
Java 编译器 C++
不懂泛型,怎么装逼,一文把泛型说的明明白白,安排!!!
泛型是Java中的高级概念,也是构建框架必备技能,比如各种集合类都是泛型实现的,今天详细聊聊Java中的泛型概念,希望有所收获。记得点赞,关注,分享哦。
130 0
不懂泛型,怎么装逼,一文把泛型说的明明白白,安排!!!
|
Java 数据库
后浪拍前浪-覆写父类方法 | 带你学《Java面向对象编程》之三十九
既然出现了继承的关系,那么就存在子类和父类的联系,而在子类之中有可能定义和父类完全相同的方法或属性的名称,这个时候就称为覆写。
后浪拍前浪-覆写父类方法   | 带你学《Java面向对象编程》之三十九