关于Java的对象,构造器,构造方法...

  1、对象:

  Everything is object

  万物皆对象

  所有事物都有两个方面:

  有什么属性:用来描述对象

  能够做什么方法:告诉外界对象有哪些功能;

  后者以前者为基础

  大的对象的属性也可以是一个对象。

通俗的讲:对象:生活中具体的实体

  类:是不存在的,对象的抽象(一种虚拟的概念定义):包含一些列对象共同点的属性和行为集合。

类:人类、房子类、狗类、喵星人类

如果说一个对象拥有一个类中的所有的属性和行为,那这个对象就属于这个类,可以用 这个类名来称呼这个对象

类定义的格式:public class 类名{}

定义属性格式:public 属性类型 属性名;

定义行为格式:public 返回类型 方法名(){}

 

   2、构造器:

作用:用来构造当前类的对象、初始化当前类对象的一些属性

格式:public 类名(){}

特点:执行的时间是创建当前类的对象时候执行

  有返回值,返回的是内存的地址

 

   3、构造方法:是当用类生成对象时,系统在生成对象的工程中利用的方法。

        注意:构造方法在生成对象的时候会被调用,但并不是构造方法生成了对象。

构造方法是没有返回值的!

格式:public 方法名;

但构造方法的方法名与类名相同,它是在对象生成的工程中自动调用,不能利用指令去调用。

比如:Student Stu=new Student():

“Student()”表示调用一个无参数的构造方法,如果()中有参数,则系统构造对象的过程中调用有参数的方法。Student Stu存放的是地址。

可以进行构造多个构造方法,但多个构造方法的参数表一定不同,参数的顺序不同属于不同的构造方法。

比如:public student (string s,int a){}

      public student (int a,string s){}

      public student (string s{}

      public student (int a){}

如果我们未给系统提供一个构造方法,那么系统会自动提供一个为空的构造方法(默认的)。

 

 

  4、继承:

定义:子类继承父类,拥有父类的所有非私有属性和方法

格式:public class 子类类名 extends 父类类名{}

作用:方便重复使用已经定义了的属性和方法,不要重复编写

不允许有多继承,一个类有且只有一个父类。

This()用于调用本类的构造方法,

但在构造方法中,this表示本类的其他构造方法:

Student(){};

Student(string s){

This();

}   此时this()表示调用student()

如果调用studentint a)则为thisint a)。

还需注意的是 如果用this调用其他构造方法是,this必须为第一条语句,然后才是其他语句。

 

 5、方法重载:在同一个类中,多个方法的方法名相同,参数个数/类型/顺序不一样的方法互为重载方法

注意:构造方法重载,主要用于初始化当前对象属性

      如果重载了构造方法,则默认的构造方法就不存在了

方法重载的存在只是作为应对方法的细节,利用类型的差异来影响对方法的调用。

比如:吃()可以分为吃肉,吃菜,吃药,在一个类中可以定义多个吃方法。

用构造方法也可以实现方法重载

Public void eat(){};

Public void eat(int a){};

Public void eat(String s){};

 

 

 

 6、方法重写:子类重写父类的方法(方法名、参数必须一致)

     重写就是子类覆盖父类继承过来的方法

当子类从父类继承一个无参的方法,而又定义了一个同样的无参方法,则子类新写的方法会覆盖父类的方法(返回值的类型必须相同,否则会出错)。但是如果方法不同的话,则会变成重载。

 

 7、自动转型:子类对象自动转型为父类类型

   比如:如果我是一个大学生,那么我就是一个学生

   格式:父类类型  对象名 = new 子类类名();

   注意:自动转型后的对象是:父类类型

         自动转型后的对象调用父类方法的时候,如果子类重写了,则会执行重写后的方法,如果没有重写,则执行父类自己的

比如:

public class Student {

public void study(){

System.out.println("学生进行学习的方法");

}

}

 

 

 

 

public class MiddleStudent extends Student{    //Middlestudent继承Student父类

public void study(){

System.out.println("中学生进行学习的方法");

}

}

 

 

 

 

Public class test{

Public static void main(String[] args){

Student ms=new Middlestudent();//进行转型

ms.study();

}

因为中学生属于学生这一范围,所以可以说成中学生是学生,但反过来学生就不一定是中学生,这时就可以对中学生进行学生(父类)的转型,把中学生转型成学生这一类型,中学生转型后调用(父类)学生的方法时,如果中学生没有重写方法,那结果应该是输出"学生进行学习的方法",但中学生已经进行重写方法了,这时执行重写了的方法,此时输出的是"中学生进行学习的方法"

 

 

 

 8、多态性:多个同一个类型的对象调用方法的时候,执行不一样的过程

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值