方法

构造方法(Constructor)

构造方法是方法名与类名的特殊方法,在新建对象时调用,可以通过不同的构造方法实现不同方式的初始化,它有如下特征:
(1)构造方法名称必须与类名相同。
(2)构造方法没有返回类型,void也不行。它返回对象的地址,并赋值给变量。
(3)构造方法不能够被继承,不能够被覆写,不能被直接调用。调用的途径有三种:
①通过new关键字,②是在子类的构造方法中通过super调用父类的构造方法,③是通过反射的方式调用
(4)类定义时候提供默认的无参构造方法。但是如果显式定义了有参构造方法,无参的构造方法就会被覆盖;如果依然想拥有,就需要进行显式定义
(5)构造方法可以私有。外部无法使用构造方法创建对象。
贴上代码我们看看这个构造方法:

public  class People{
 public People(int age,String name){
    System.out.println("hello!");
    System.out.println("我叫"+name+"我今年"+age+"岁!")
  }
 public static void main(String args[]){
    People p=new People(18,"张三")
 }
}

action:
(1)在接口中不能够定义构造方法,在抽象类中可以定义。在枚举类中,构造方法是特殊的,但是默认是private的不能够加public,是不允许外部以创建对象的方式生成枚举对象。
(2)一个类可以有多个参数不同的构造方法,称为构造方法的重载,为了规范应该将这些构造方法放在一
起。

类内方法

(1)实例方法
实例方法又被称为非静态方法,它必须依附于某一个实例对象,并通过引用变量调用其方法。实例方法可以调用静态方法和静态静态变量也可以相互调用,但是不包含this。当class文件加载后,实例方法并不会被分配方法入口地址,只有在对象创建后才会被分配。
(2)静态方法
又称为类方法。当类加载后,就分配了相应的内存空间,但是我们需要注意的是:
①静态方法中不能使用实例变量成员和实例方法。
②静态方法不能够使用super和this关键词,这两个关键词指代的都是要创建出来的对象
(3)静态代码块
静态代码块是在类加载的时候就被调用的,并且只执行一次。静态代码块是先于构造方法放入特殊代码块。静态代码块不能存在于任何方法体内,包括类静态方法和属性变量

public class StaticCode {
    static String prior="done";
    static String last=f()?g():prior;
    public static  boolean f(){
        return true;
    }
    public static String g(){
        return "hello word";
    }
    static {
        //可以访问静态方法和静态变量
        System.out.println(last);
        g();
    }
}

getter与setter

getter与setter是一类特殊的方法,不包含任何的业务逻辑,仅仅是为类成员属性提供读取和修改方法。这样设计的好处就是
①满足面对对象的封装性。尽可能将类的属性定义为private。
②有利于同一控制。
说起getter和setter方法我们不得不说POJO(Plain Ordinary Java Object,简单java对象),常见的POJO类包括DO(Data Object)、BO(Business Object)、DTO(Data Transfer Object)、VO(View Object)、AO(Application Object)。POJO作为数据载体通常用于数据传输,不应该包含任何业务逻辑。
虽然简单但是也有出错的情况:
①setter和getter方法中添加业务逻辑。
②同时定义 isXxx和getXxx方法。
③相同的属性名容易带来歧义。

覆写

覆写就是多态中的override,要想成功的覆写父类方法,我们要满足:
①访问权限不能够变小。比如父类的方法是public而子类的想要将他变为private,这种是不行的。只能够比父类的权限大才可以。
②返回类型能够向上转型成为父类的返回类型。
③异常也要能够向上转型为父类异常。
④方法名、参数个数、参数类型必须严格一致。

public class Domo {
    protected Number doSomething(int a,Integer b,Object c)throws SQLException {
        return new Integer(7);
    }
    
}
class DomoSon extends Domo{
    @Override
    public Number dosomething(int a,Integer b,Object c)throws SQLClientInfoException {
        return new Integer(17);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值