读者可订阅专栏:Java开发指南 |【CSDN@秋说】
访问实例变量和方法
通过已创建的对象来访问成员变量和成员方法,如下所示:
/* 实例化对象 */
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();
}
}