对象和类的概念:
类:类是一个模板,它描述一类对象的行为和状态。
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
Java中的类:
定义类的基本格式:
[修饰符(可省略)]class ClassName{
零到多个构造器……
零到多个成员变量……
零到多个方法……
}
修饰符可以为public final abstract或者不写
命名格式:大驼峰命名
构造器:
构造器也叫构造方法或者构造函数,构造器与类名相同,没有返回值,连void都不能写;
构造器定义格式:[修饰符]类名(形参列表){构造器方法体代码}
名称与类名相同,没有返回值,不能写void
如果类中没有手动添加构造器,编译器会默认再添加一个无参构造器
如果手动添加了构造器(无论什么形式),默认构造器就会消失
构造器可以重载
成员变量:
成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
格式:[修饰符]type 成员变量名称[=默认值];
修饰符(public protected private)三选一、static、final
方法
Java方法是语句的集合,它们在一起执行一个功能。
方法是解决一类问题的步骤的有序组合
方法包含于类或对象中
方法在程序中被创建,在其它地方被引用
格式:[修饰符]方法的返回值类型 方法名称(形参列表){方法体代码 [return 返回值]}
修饰符(public、protected、private)三选一、static、final、synchronize、native
整体示例:
public class SimplePerson {
//构造器
public SimplePerson(){
}
//成员变量
String name;
int age;
//方法
public void say(String text){
System.out.println(this.age+" years ago "+this.name+" say:\""+text+"\"");
}
}
Java中的对象
创建对象
对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:
声明:声明一个对象,包括对象名称和对象类型。
实例化:使用关键字new来创建一个对象,只是为对象在内存中开辟空间。
初始化:使用new创建对象时,会调用构造方法初始化对象,对象中的值赋初始值。
格式:classTpye 对象名称=new classTpye();
public class Demo1 {
public static void main(String[] args) {
// ClassDemo classDemo=new ClassDemo();
// //声明对象
// SimplePerson simplePerson;
// //实例化对象new
// simplePerson=new SimplePerson();
//一般和在一起写
SimplePerson person=new SimplePerson();
}
}
访问实例变量和方法:
格式:
/* 访问类中的变量 */
//objName.variableName;
/* 访问类中的方法 */
//objName.methodName();
person.age=20;
person.name="ChengMu";
person.say("I have a dream!");
构造器的重载
构造器的重载,形参列表不同
public class Person {
int age;
String name;
//先定义成员变量再写构造器
/*构造器
如果不定义,系统会提供一本默认的构造器(无参的)
如果定义了构造器,系统默认的构造器就会被覆盖
构造器定义
[修饰符]构造器名称(类名)(形参列表) {}
修饰符可以是public private protected,也可以不写
构造器名称一定和类的名称相同*/
public Person(){//构造器重载,构造器列表参数的不同
//构造是没有返回方法的,没有返回类型的,定义了有参的构造器,无参的就没有了
System.out.println("无参构造器");
}
public Person(String name){//就近原则,会选择离最近的name,调用构造方法1
this.name=name;//就近原则
System.out.println("有参构造器1");
}
public Person(String name, int age){
//this()调用构造方法
//构造器不能调用自己
this(name);//调用构造方法1
this.age=age;
System.out.println("有参构造器2");
}
//this
public void say(String text){
System.out.println(this.age+"岁的"+this.name+"说:\""+text+"\"");
}
方法重载
重载时在一个类里面。方法名字相同,而参数不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
最常用的地方就是构造器的重载
重载规则
被重载的方法必须形参列表不一样(参数个数或类型不一样);
被重载的方法可以改变返回类型;
被重载的方法可以改变访问修饰符
被重载的方法可以声明新的或更广的检查异常;
方法能够在同一个类中或者在一个子类中被重载
返回值类型不能作为重载函数的区分标准。
示例代码:
//方法的重载overload
/*
Java程序中确定一个方法需要三个要素。
>调用者,也就是方法的所属者,既可以是类,也可以是对象。
>方法名,方法的标识。
>形参列表,当调用方法时,系统将会根据传入的实参列表匹配。
方法重载的要求就是两同一不同:同一个类中方法名相同,参数列表不同。
*/
public void say(String text,String state){
System.out.println(this.age+"岁的"+this.name+state+" Say:\""+text+"\"");
}
//static标识符,加static代表着类的方法,或者类的成员变量。不加代表的是实例的new 的那个对象的
static int intA=10;
public static void say1(String text){//加了static是属于类的方法,不加是属于对象的方法
//加了static就不能用this了,this代表一个对象实例化后的对象
//,加了static类的一个方法,在类里面无法调用其他对象、不能调用非static的方法
//加了static是属于类的成员变量,可以直接通过类名调用
System.out.println(text);
}