java作为一门面向对象的语言,实现了面向对象的以下这些概念:
类是对对象的抽象(可以认为是生成类的模板),而对象是类的实例,对象拥有类的公共属性和方法,同时也可以对这些属性和方法进行重写和重载,这不仅仅在java中是这样的概念,在JavaScript等面向对象的编程语言中都大同小异。
现在创造一个简单的类:
public class ClassTest { String breed; int size; String colour; int age; void eat() { } void run() { } void sleep() { } void name() { } public static void main(String[] args) { } }
一个类可以包含以下类型变量:
局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。
一个类可以拥有多个方法,在上面的例子中:eat()、run()、sleep() 和 name() 都是 Dog 类的方法。
每个类都有构造方法。如果代码中没有显式定义类的构造方法。java编译器将会为该类提供默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须和类同名,一个类可以有多个构造方法。
public class Puppy{ public Puppy(){ } public Puppy(String name){ // 这个构造器仅有一个参数:name } }
对象是根据类创建的(这个过程叫做类的实例化),在java中,同样使用new关键字来创建对象,对象的创建需要以下三个步骤:
public class Dog { String name; public Dog(String name) { this.name = name; System.out.println("name is: " + name); // name is: Kokki } void sayName() { System.out.println(this.name); } public static void main(String[] args) { Dog myDog = new Dog("Kokki"); myDog.sayName(); // Kokki } }
在上面的例子中继续添加方法:
public class Dog { String name; int age; String category = "Kokki"; static String gender = "male"; public Dog(String name) { this.name = name; System.out.println("name is: " + name); // name is: Kokki } void sayName() { System.out.println(this.name); } void sayAge() { System.out.println("age is: " + age); } void setAge(int ageArg) { age = ageArg; } public static void main(String[] args) { Dog myDog = new Dog("Kokki"); myDog.sayName(); // Kokki myDog.sayAge(); // age is: 0 myDog.setAge(10); myDog.sayAge(); // age is: 10 System.out.println(myDog.category); // 测试静态关键字 static是否和ts里面的类似 System.out.println(Dog.gender); } }