Java:类

Java:类

Java是一种面向对象(object oriented) 的语言!对象(object) 有点类似于C中的结构体,它由属性和方法组成。要创建一个对象,首先要创建一个类(class)。类是一个概念模型,定义了对象有哪些属性和方法。对象是类的一个实例,由类创建对象的操作叫做实例化

  • 类的名称就是文件的名称。
  • 类名称的单词首字母全部大写!

在类的个数很多的时候,就有可能出现命名冲突的情况。包(package) 可以提供类的多层命名空间,并且控制包与包之间的访问权限。

  • package语句应该放在源文件的第一行,每个文件中只有一个包定义语句。
  • 包名称的单词首字母全部小写!

如果使用不同包中的其它类,需要使用该类的全名(包名+类名)。为了简化代码,可以使用import语句向文件中导入指定包层次下的某个类或全部类。

  • import语句位于package语句之后。

导入某个类:

import example.Test;

使用*导入全部类:

import example.*;

来创建一个类吧!

Person.java:

package mogeko;

public class Person{
	private String name;
	private int age;
	public Person(String name,int age) {
		this.name = name;
		this.age = age;
	}
	public String intro() {
		return "我叫"+name+",今年"+age+"岁!";
	}
}

PersonTest.java:

package mogeko;

public class PersonTest{
	public static void main(String args[]) {
		Person kira = new Person("吉良吉影",33);
		System.out.println(kira.intro());
	}
}

运行结果:

我叫吉良吉影,今年33岁!

this关键字

如果类的方法中的某个局部变量和该类的成员变量同名,在使用这个成员变量时就要用到this前缀。

构造方法

构造方法用来初始化类的一个新的对象,在使用new运算符时调用。

如果在类中没有定义任何构造方法,则该类会自动生成一个默认的构造方法。

  • 在一个类中,与类名相同的方法就是构造方法。
  • 每个类可以具有多个构造方法,但要求它们各自包含不同的方法参数(可以是无参)。
  • 构造方法没有任何返回值,默认返回类型就是对象类型。
public class Person{
	private String name;
	private int age;
    
	public Person(String name) {
		this.name = name;
	}
    
	public Person(String name,int age) {
		this.name = name;
		this.age = age;
	}
    
    public void tell() {
        System.out.println("姓名:" + name + ",年龄:" + age);
    }
    
	public String toString() {
		return "我叫"+name+",今年"+age+"岁!";
	}
}

**提示:**Object 类具有一个toString() 方法,它返回一个 String 类型的字符串。如果一个类中定义了该方法,使用System.out.println(对象名)就可以将返回的字符串内容打印出来。

创建对象

  1. 使用new关键字
Person a = new Person();
Person b = new Person("吉良吉影",33);
  1. 隐含创建对象
String str1 = "Hello";

其中的"Hello"就是一个隐含的String对象。

  1. 匿名对象
new Person("吉良吉影",33).tell();

这个语句实际上就是一个匿名对象,与之前声明的对象不同,此处没有任何栈内存引用它,所以此对象使用一次之后就等待被回收。

继承

定义一个继承类:

class Student extends Person{
}

子类继承父类的所有的属性和方法(除了构造方法)。

super()关键字

定义Person类的属性和有参构造方法:

public class Person {
	String name;
	int age;
	Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
}

那么,它的子类Student的构造方法应该为:

public class Student extends Person{
	int number;
	Student(String name, int age, int number) {
		super(name, age);
		this.number = number;
	}
}

如果不写,Java会自动调用父类的无参构造方法,即super()