l 类(class)和对象(object)是面向对象的核心概念。
现实世界万事万物是由分子、原子构成的。同理,Java代码世界是由诸多个不同功能的类构成的。现实世界中的分子、原子又是由什么构成的呢?原子核、电子!那么,Java中用类class来描述事物也是如此,类的成员有:属性(Field)、方法(Method)、构造器、代码块以及内部类。
class Person{ //属性或成员变量 String name; boolean isMarried; //构造器 public Person(){} public Person(String n,boolean im){ name = n;isMarried = im; } //方法或函数 public void walk(){ System.out.println("人走路..."); } public String display(){ return "名字是:" + name + ",Married:" + isMarried; } //代码块 { name = "HanMeiMei"; age = 17; isMarried = false; } //内部类 class pet{ String name; float weight; } } |
类型修饰符 class 类名 extends 父对象名称 implements 接口名称{ 属性声明; 方法声明; } |
说明:修饰符public:类可以被任意访问。类的正文要用{ }括起来
public class Person{ private int age ; //声明私有变量 age public void showAge(int i) { //声明方法showAge( ) age = i; } } |
【创建Java自定义类的步骤】
①定义类(考虑修饰符、类名)
②编写类的属性(考虑修饰符、属性类型、属性名、初始化值)
③编写类的方法(考虑修饰符、返回值类型、方法名、形参等)
语法格式:
修饰符 类型 属性名 = 初值 ; |
说明: 修饰符private: 该属性只能由该类的方法访问。修饰符public: 该属性可以被该类以外的方法访问。类型:任何基本类型,如int、boolean或任何类。
public class Person{ private int age; //声明private变量 age public String name = “Lila”; //声明public变量 name } |
成员变量(属性)和局部变量的区别:
l 成员变量:在方法体外,类体内声明的变量
l 局部变量:在方法体内部声明的变量
语法格式:
修饰符 返回值类型 方法名 (参数列表) { 方法体语句; } |
说明:修饰符:public, private等。返回值类型:return语句传递返回值。没有返回值:void。
public class Person{ private int age; public int getAge() { return age; } //声明方法getAge public void setAge(int i) { //声明方法setAge age = i; //将参数i的值赋给类的成员变量age } } |
构造方法主要用来创建类的实例化对象,可以完成创建实例化对象的初始化工作。
语法:
[修饰符列表] 构造方法名(形式参数列表){ 方法体; } |
说明:构造方法的方法名必须和类名一致;构造方法修饰符列表:public、proteced、private
构造方法的作用:
①创建对象
②给创建的对象的属性(成员变量)赋值,即初始化成员变量。
构造方法应该如何调用?
new 构造方法名(实参); //在堆中开辟空间存储对象 |
注意:
①如果一个类没有提供任何构造方法,系统默认提供无参数构造方法。如果一个类已经手动的提供了构造方法,那么系统不会再提供任何构造方法。
②成员变量到底什么时候赋值:只有在调用构造方法的时候,才会给成员变量赋值。
③类的多个构造器之间构成重载
④类对象的属性赋值的先后顺序:属性的默认初始化>属性的显式初始化>通过构造器给属性初始化>通过"对象.方法"的方式给属性赋值
【eclipse操作】
快速生成构造器:菜单栏Source à Generate Constrctor using Fields…
快速生成get,set方法:菜单栏Source à Generate Getters and Setters…
在一个类中,类中的方法可以直接访问类中的成员变量(例外:static方法访问非static,编译不通过)。在不同类中,先创建要访问类的对象,再用对象访问类中定义的成员。
Animal a3=a1;a3.name=“维尼熊”; //此时若将a3的属性改变,那a1的属性也被改变了
//a3不意味着相较于a1重新创建的一个对象,而是a1与a3共用一个对象实体
原文:https://www.cnblogs.com/superjishere/p/11792546.html