Java的类与对象定义和使用
面向对象的程序设计:封装性、继承性、多态性
类:具有相同属性和行为的一组对象称为"类"(抽象、概念上的定义)
对象:类的实例化(具体、事实存在的个体)
类的定义:
[<类修饰符>] class <类名> [extends <父类名>][implements 接口列表] {数据成员、成员函数等属性}
如:
public class Citzen //定义一个市民类 { String name; //姓名 String gender; //性别 Date birthday; //日期类的成员变量 String homeland; //家乡 String ID; //ID } public class Date{int year;int month;int day;}
类的使用:new关键字,实例创建类
语法: 类名 对象名=new 构造函数名(实参);
如:
public class Student{ //创建一个学生类 private String name; private String gender; private String homeland; public void setname(String name){this.name=name;} public void setgender(String gender){this.gender=gender;} public void sethomeland(String homeland){this.homeland=homeland;} public void talk(){System,out.print("name:"+this.name+"gnnder:"+this.gender+"homeland:"+this.homeland} } public static void main(String[] args) {Student stu1=new Student(); stu1.name="小明";stu.gender="男";stu1.homeland="北京"; Student stu2=new Student(); stu2.name="小华";stu2.gender="男";stu2.homeland="广州"; Student stu3=new Student(); stu3.name="小红";stu3.gender="女";stu3.homeland="武汉"; stu1.talk(); stu2.talk(); stu3.talk();}
函数的参数传递:①按值传递②按引用传递:当引用语句中实参是对象或数组时,被引用的函数声明的形参也一定是对象或者数组。
对象的清除:类中提供了一个函数finalize(),但不提倡使用。
若在程序中确实希望清除某对象并释放其空间,只需要将空引用(null)赋值即可。
函数的重载:某些情况下,对象的同种行为存在多种实现处理(overload)。一个类中,定义多个相同名称的函数。
函数重载的特点:①函数名称相同②参数列表不同(个数、类型、顺序)③与访问修饰符、返回值类型无关
函数重载的示例:
public class Test{ //重载show函数 public void show(){System.out.println("无参show函数")} public void show(String name){System.out.println("含参show函数"+name);} public void show(int num){System.out.println("含参show函数"+num);} } public static void main(String[] args){ Test t=new Test(); t.show(); //无参函数 t.show(100); //含参函数num t.show("小明"); //含参函数name }
构造函数:类中特殊的函数,主要用于创建对象。
构造函数的特点:名称与类名完全相同。无返回值类型,创建对象时,自动调用构造函数。
说明:若没有在类中显式定义构造函数,则编译器默认提供无参构造函数。
对象的创建过程:①开辟空间并为属性赋予默认值(new 构造函数名)②执行构造函数的代码③对象地址赋给变量。
构造函数的重载:同类中可添加多个同名构造函数。
如:
class Student{ String name;int age;String gender;double score; public Student(){} public Student(String name){} public Student(String name,int age){} public Student(String name,int age,String gender){} public Student(String name,int age,String gender,double score){} }
this关键字:类是模板,可服务于此类所有对象。this是类中的默认引用,代表当前实例。当类服务于某个对象时,this指向这个对象
this的用法:①调用实例属性,实例函数。注意:若成员变量与局部变量(形参)名相同,由于局部变量的优先级高,使用this访问实例变量。
②调用本类的其他构造函数。
说明:this()/this(实参),必须是函数体中的第一条语句。只能调用一次this()/this(实参)
本文地址:https://blog.csdn.net/qq_46960542/article/details/108031754
推荐阅读
-
java通过反射,只需要传了类名和参数,就可以根据不同参数的构造方法实例化对象
-
Java中类的定义和初始化示例详解
-
Python中类的定义、继承及使用对象实例详解
-
Java面向对象(1)面向对象的思想概述以及类的介绍,封装和构造方法
-
JavaEE基础day02 1.定义Java中的变量 四类八种 2.变量定义和使用的注意事项 3.数据类型的转换、强制数据类型转换4.算数运算符、比较运算符、逻辑运算符、赋值运算符、三元运算符
-
自定义的Troop
泛型类( c++, java和c#)的实现代码 -
Objective-C中类和方法的定义以及协议的使用
-
Java之反射第十八天( --反射----类的加载--获取对象属性( 成员变量和方法)-- 构造方法 )
-
Java时间类Date类和Calendar类的使用详解
-
透彻理解Java中Synchronized(对象锁)和Static Synchronized(类锁)的区别