精华内容
下载资源
问答
  • 抽象类构造函数

    2013-04-12 15:53:03
    若果在父类中(这里就是你的抽象类)中显示的写了又参数的构造函数,在子类继承是就必须写一个构造函数来调用父类的构造函数 例子: abstract class Person { //定义一个抽象类,必须被继承 Person(int i) { ...
    
    
    构造函数是对象的基本,没有构造函数就没有对象。
    若果在父类中(这里就是你的抽象类)中显示的写了又参数的构造函数,在子类继承是就必须写一个构造函数来调用父类的构造函数
    例子:
     abstract class Person {   //定义一个抽象类,必须被继承
      
        Person(int i) {
          
       }
     }
    
     public class Student extends Person {
       
        Student() {
         super(int i)://必须显示的调用父类构造方法//super代表父类对象
      }
     }
    
    如果父类中有没有参数的构造函数,在子类中可以不显示的写父类的构造函数,Java会自动调用没有参数的构造函数
    例子:
     abstract class Person {   //定义一个抽象类,必须被继承
      
        Person() { //此构造函数也可以不写,Java会默认添加一个没有参数的构造函数
          
       }
     }
    
     public class Student extends Person {
       
        Student() {
         //super();//可以不写,Java会自己调用这个super()方法
      }
     }
    展开全文
  • 抽象类构造函数测试

    2021-06-11 11:26:44
    /*本类用作抽象类构造函数测试*/ public class AbstractDemo2 { public static void main(String[] args) { //4.测试抽象类是否可以创建对象?答案:不可以!!! //Animal4 a=new Animal4(); //5.创建子类对象...
    package cn.tedu.oop;
    /*本类用作抽象类构造函数测试*/
    public class AbstractDemo2 {
        public static void main(String[] args) {
            //4.测试抽象类是否可以创建对象?答案:不可以!!!
            //Animal4 a=new Animal4();
            //5.创建子类对象进行测试
            Pig4 a=new Pig4();
    
        }
    }
    //1.创建抽向父类Animal4
    abstract class Animal4{
        //3.创建构造方法
        public Animal4(){
            System.out.println("I am Animal4'构造方法");
        }
    }
    //2.创建子类pig4
    class Pig4 extends Animal4{
        //6.创建子类的无参构造
        public Pig4(){
            super();//表示调用父类的无参构造
            System.out.println("我是pig4的无参构造");
        }
    }
    

     

    展开全文
  • java抽象类构造函数的含义

    万次阅读 2016-06-28 10:04:18
      抽象类虽然自身不可以实例化,但是其...若果在父类中(这里就是你的抽象类)中显示的写了又参数的构造函数,在子类继承是就必须写一个构造函数来调用父类的构造函数 例子:  abstract class Person { //定义...

     

     

    抽象类虽然自身不可以实例化,但是其子类覆盖了所有的抽象方法后,是可以实例化的,所以抽象类的构造函数,适用于给其子类对象进行初始化的

     

     

     

    构造函数是对象的基本,没有构造函数就没有对象。
    若果在父类中(这里就是你的抽象类)中显示的写了又参数的构造函数,在子类继承是就必须写一个构造函数来调用父类的构造函数
    例子:
     abstract class Person {   //定义一个抽象类,必须被继承
      
        Person(int i) {
          
       }
     }


     public class Student extends Person {
       
        Student() {
         super(int i)://必须显示的调用父类构造方法//super代表父类对象
      }
     }


    如果父类中有没有参数的构造函数,在子类中可以不显示的写父类的构造函数,Java会自动调用没有参数的构造函数
    例子:
     abstract class Person {   //定义一个抽象类,必须被继承
      
        Person() { //此构造函数也可以不写,Java会默认添加一个没有参数的构造函数
          
       }
     }


     public class Student extends Person {
       
        Student() {
         //super();//可以不写,Java会自己调用这个super()方法
      }
     }

    展开全文
  • 一、首先了解下子类继承父类构造...当通过子类构造函数创建实例,会调用指明的、父类的构造函数● 父类的公共属性可以通过子类来赋值,子类也可以获取到父类的公共属性二、抽象类能否有构造函数?我们知道,抽象类...

    一、首先了解下子类继承父类构造函数调用的问题

    ● 通过子类无参构造函数创建子类实例,会默认调用父类的无参构造函数
    ● 通过子类有参构造函数创建子类实例,也会默认调用父类的无参构造函数
    ● 在子类构造函数中通过base关键字指明父类构造函数,当通过子类构造函数创建实例,会调用指明的、父类的构造函数
    ● 父类的公共属性可以通过子类来赋值,子类也可以获取到父类的公共属性

    二、抽象类能否有构造函数?

    我们知道,抽象类是不能被实例化的。但抽象类是否可以有构造函数?答案是可以有。抽象类的构造函数用来初始化抽象类的一些字段,而这一切都在抽象类的派生类实例化之前发生。不仅如此,抽线类的构造函数还有一种巧妙应用:就是在其内部实现子类必须执行的代码。

    虽然抽象类不能被实例化,但可以有构造函数。由于抽象类的构造函数在实例化派生类之前发生,所以,可以在这个阶段初始化抽象类字段或执行其它与子类相关的代码。

    三、场景运用

    在ASP.NET MVC环境搭建的时候,我们业务层调用数据会话层(为了解耦),但是我们在业务层调用的时候封装代码(增删改查,需要指定是哪个EF中的那个业务类,这个工作由继承该抽象类的子类去指定,那么这个时候就可以运用构造函数解决)

    1、抽象类代码

    using CZBK.ItcastOA.DALFactory;
    using CZBK.ItcastOA.IDAL;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace CZBK.ItcastOA.BLL
    {
       public abstract class BaseService<T> where T:class,new()
        {
           public IDBSession CurrentDBSession
           {
               get
               {
                  // return new DBSession();//暂时
                   return DBSessionFactory.CreateDBSession();
               }
           }
           public IDAL.IBaseDal<T> CurrentDal { get; set; }
           public abstract void SetCurrentDal();
           public BaseService()
           {
               SetCurrentDal();//子类一定要实现抽象方法。
           }
           public IQueryable<T> LoadEntities(System.Linq.Expressions.Expression<Func<T, bool>> whereLambda)
           {
             
               return CurrentDal.LoadEntities(whereLambda);
           }
    
           public IQueryable<T> LoadPageEntities<s>(int pageIndex, int pageSize, out int totalCount, System.Linq.Expressions.Expression<Func<T, bool>> whereLambda, System.Linq.Expressions.Expression<Func<T, s>> orderbyLambda, bool isAsc)
           {
               return CurrentDal.LoadPageEntities<s>(pageIndex, pageSize, out totalCount, whereLambda, orderbyLambda, isAsc);
           }
            /// <summary>
            /// 删除
            /// </summary>
            /// <param name="entity"></param>
            /// <returns></returns>
           public bool DeleteEntity(T entity)
           {
               CurrentDal.DeleteEntity(entity);
               return CurrentDBSession.SaveChanges();
           }
            /// <summary>
            /// 更新
            /// </summary>
            /// <param name="entity"></param>
            /// <returns></returns>
           public bool EditEntity(T entity)
           {
               CurrentDal.EditEntity(entity);
               return CurrentDBSession.SaveChanges();
           }
            /// <summary>
            /// 添加数据
            /// </summary>
            /// <param name="entity"></param>
            /// <returns></returns>
           public T AddEntity(T entity)
           {
               CurrentDal.AddEntity(entity);
               CurrentDBSession.SaveChanges();
               return entity;
           }
        }
    }
    

    2、子类继承代码实现

    public partial class UserInfoService : BaseService<UserInfo>,IUserInfoService
        {
    
            public override void SetCurrentDal()
            {
                CurrentDal = this.CurrentDBSession.UserInfoDal;
            }
    }

    四、总结

    抽象类中的CurrentDal属性需要被指定,然后子类重写父类中的SetCurrentDal方法,这时候父类中的构造函数调用时,会调用重写的SetCurrentDal方法。给CurrentDal属性赋值。(错误的地方请多多指教)

    展开全文
  • 抽象类构造函数问题

    2012-07-24 01:34:11
    enum Size{Mini, Medium, Full};...请问怎么在没其他虚函数的情况下把基类CVehicle声明为抽象类。。构造函数显然不能成为虚函数,还有其他办法么?是否把析构函数变纯虚? 这种没多态动作的继承是不是不好?
  • 前段时间找工作,去面试碰到了两道关于C#构造函数的题目,首先来看静态构造函数的题目如下(原题不是如此,但类似,因为实在记不住那题目的样子了,第二题也是): class Base { static Base() { ...
  • 原网址:https://blog.csdn.net/YuanMxy/article/details/74389953(1)Java中抽象类和接口中有构造方法吗?①在接口中 不可以有构造方法在接口里写入构造方法时,编译器提示:Interfaces cannot have constructors。...
  • <?xml version="1.0" encoding="UTF-8"?>
  • <?xml version="1.0" encoding="UTF-8"?>
  • 一个抽象类C,有两个构造函数,分别是C(void), C(const string str) 在C(const string str)中调用C(void), 编译时报错:不能实例化抽象类 这到底是怎么回事?
  • 既然不能对抽象类实例化,那么抽象类构造函数的作用是什么? 可以用来初始化抽象类内部声明的通用变量,并被各种实现使用。另外,即使没有提供任何构造函数,编译器将为抽象类添加默认的无参数的构造函数,没有的话...
  • 抽象类构造函数

    2017-03-18 17:46:45
    但很多人认为,构造函数用于实例化一个对象(或建立一个对象的实例),而抽象类不能被实例化,所以抽象类不应该有公共的构造函数(FxCop.设计规则)。但不应该有“公共”的构造函数,和不应该有构造函数,这是两个...
  • 若果在父类中(也就是抽象类)中显示的写了有参数的构造函数,在子类是就必须写一个构造函数来调用父类的构造函数 abstract class Person { //定义一个抽象类,必须被继承 Person(int i...
  • java 抽象类构造函数的作用

    千次阅读 2020-04-17 12:33:42
    毋庸置疑抽象类中可以定义构造函数,但是这时会有一个疑问,既然抽象类的实例化毫无意义那为何又要定义其自己的构造函数呢? 首先,可以通过其内部的构造函数初始化其内部的变量。 其次,可以通过实现它的子类通过...
  • 但很多人认为,构造函数用于实例化一个对象(或建立一个对象的实例),而抽象类不能被实例化,所以抽象类不应该有公共的构造函数(FxCop.设计规则)。但不应该有“公共”的构造函数,和不应该有构造函数,这是两个...
  • 抽象类构造函数用来初始化抽象类的一些字段,而这一切都在抽象类的派生类实例化之前发生。不仅如此,抽线类的构造函数还有一种巧妙应用:就是在其内部实现子类必须执行的代码。 以下就是在抽象类构造函数中来...
  • 因为你不可以创建抽象类的实例,所以构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数),例如,当你创建具体的实现类。现在一些面试官问,如果你不能对抽象类实例化那么构造...
  • 因为你不可以创建抽象类的实例,所以构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数)例如,当你创建具体的实现类。 现在一些面试官问,如果你不能对抽象类实例化那么构造...
  • Java抽象类可以有构造函数

    万次阅读 多人点赞 2019-03-11 21:23:51
    因为你不可以创建抽象类的实例,所以构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数),例如,当你创建具体的实现类。现在一些面试官问,如果你不能对抽象类实例化那么构造...
  • 抽象类也需要构造函数, 在大多数情况中抽象类往往是要被继承的, 在子类的构造函数中往往会调用父类的构造函数, 在这种情况下就需要父类(抽象类)来提供构造函数来调用super了, 当然如果没有提供的话就会调用默认的...
  • java中抽象类构造函数使用

    千次阅读 2016-08-12 17:44:14
    如果在父类中(这里就是你的抽象类)中显示的写了有参数的构造函数,在子类继承是就必须写一个构造函数来调用父类的构造函数 例子: abstract class Person { //定义一个抽象类,必须被继承 Person(int i) { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,787
精华内容 2,714
关键字:

抽象类构造函数