访问实例变量和方法
通过已创建的对象来访问成员变量和成员方法,如下所示:
/* 实例化对象 */ Object referenceVariable = new Constructor(); /* 访问类中的变量 */ referenceVariable.variableName; /* 访问类中的方法 */ referenceVariable.methodName();
举例:
public class ice{ public ice(String name) { System.out.println("名字是:"+name); } int myAge; public void setAge(int age) { myAge=age; } public int getAge() { System.out.println("年龄是:"+myAge); return myAge; } public static void main(String[] args) { ice I = new ice("张三");//创建对象 I.setAge(1);//调用方法,设定年龄 I.getAge();//调用方法,输出年龄 } }
继承
在 Java 中,一个类可以由其他类派生。如果我们需要创建一个类,而且已经存在一个类具有我们所需要的属性或方法,那么我们可以将新创建的类继承该类。
利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(sub class)。
这里给出简单的继承模板:
// 父类 class Parent { // 父类的属性 private String name; // 父类的构造方法 public Parent(String name) { this.name = name; } // 父类的方法 public void printName() { System.out.println("Name: " + name); } } // 子类继承父类 class Child extends Parent { // 子类的构造方法 public Child(String name) { // 调用父类的构造方法 super(name); } // 子类可以重写父类的方法 @Override public void printName() { System.out.println("Child's name: " + name); } // 子类可以添加新的方法 public void sayHello() { System.out.println("Hello from Child!"); } } public class Main { public static void main(String[] args) { // 创建子类的实例 Child child = new Child("ICE"); // 调用继承自父类的方法 child.printName(); // 调用子类的方法 child.sayHello(); } }
实例演示
假设有一个Animal类,它具有name和age两个属性,以及eat()和sleep()两个方法:
public class Animal { protected String name; protected int age; public Animal(String name, int age) { this.name = name; this.age = age; } public void eat() { System.out.println(name + " is eating."); } public void sleep() { System.out.println(name + " is sleeping."); } }
现在,如果我们想创建一个Dog类,它是一种动物,具有和Animal类相同的属性和方法,我们可以使用继承来实现:
public class Dog extends Animal { public Dog(String name, int age) { super(name, age); } public void bark() { System.out.println(name + " is barking."); } }
在这个例子中,Dog类继承了Animal类。Dog类拥有了name和age属性,以及eat()和sleep()方法,同时还添加了一个bark()方法。通过继承,Dog类可以重用Animal类的代码,并且可以添加自己特有的行为。
下面创建了一个Dog类的实例,并实现相应的继承:
public class Ice { public static void main(String[] args) { Dog myDog = new Dog("dog", 3); //继承 myDog.bark(); //自己特有的行为 } } class Animal { protected String name; protected int age; public Animal(String name, int age) { this.name = name; this.age = age; } public void eat() { System.out.println(name + " is eating."); } public void sleep() { System.out.println(name + " is sleeping."); } } class Dog extends Animal { public Dog(String name, int age) { super(name, age); } public void bark() { System.out.println(name + " is barking."); } }
注意:
1、父类中声明为 public 的方法在子类中也必须为 public。
2、父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。
3、父类中声明为 private 的方法,不能够被子类继承。
接口
在 Java 中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。
接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。
举个例子:
// 定义一个接口,只定义派生要用到的方法 interface Animal { void eat(); void sleep(); } //Dog类实现了Animal接口,并提供了这两个方法的具体实现。 class Dog implements Animal { public void eat() { System.out.println("Dog is eating."); } public void sleep() { System.out.println("Dog is sleeping."); } } class Main { public static void main(String[] args) { Dog myDog = new Dog(); myDog.eat(); myDog.sleep(); } }