java子类如何设置
在Java中设置子类
子类是通过继承父类来创建的,使用关键字extends。子类可以继承父类的属性和方法,同时也可以添加新的属性和方法,或重写父类的方法。
class ParentClass {
// 父类的属性和方法
}
class ChildClass extends ParentClass {
// 子类特有的属性和方法
}
子类继承父类的属性
子类会自动继承父类的非私有(public、protected或默认访问权限)属性。如果父类的属性是private的,子类无法直接访问,需要通过父类提供的公共方法(如getter和setter)来访问。
class ParentClass {
protected String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
class ChildClass extends ParentClass {
public void display() {
name = "Child"; // 可以直接访问protected属性
setAge(10); // 通过父类方法访问private属性
}
}
子类重写父类方法
子类可以重写父类的方法,以提供不同的实现。重写方法时,方法名、参数列表和返回类型必须与父类方法一致。使用@Override注解可以确保方法被正确重写。
class ParentClass {
public void display() {
System.out.println("Parent display");
}
}
class ChildClass extends ParentClass {
@Override
public void display() {
System.out.println("Child display");
}
}
子类调用父类构造方法
子类的构造方法可以通过super()调用父类的构造方法。如果父类没有默认构造方法,子类必须显式调用父类的某个构造方法。
class ParentClass {
protected String name;
public ParentClass(String name) {
this.name = name;
}
}
class ChildClass extends ParentClass {
public ChildClass(String name) {
super(name); // 调用父类构造方法
}
}
子类添加新方法
子类可以扩展父类的功能,添加新的方法。这些方法只能在子类中调用,父类无法访问。
class ParentClass {
public void parentMethod() {
System.out.println("Parent method");
}
}
class ChildClass extends ParentClass {
public void childMethod() {
System.out.println("Child method");
}
}
子类与多态
子类对象可以赋值给父类引用,实现多态。通过父类引用调用方法时,实际执行的是子类重写的方法。
ParentClass obj = new ChildClass();
obj.display(); // 调用子类重写的方法
子类访问父类的静态成员
子类可以直接访问父类的静态成员(属性和方法),但静态成员不能被重写,只能被隐藏。
class ParentClass {
public static void staticMethod() {
System.out.println("Parent static method");
}
}
class ChildClass extends ParentClass {
public static void staticMethod() {
System.out.println("Child static method");
}
}
子类与抽象类
如果父类是抽象类,子类必须实现父类的所有抽象方法,除非子类也是抽象类。
abstract class ParentClass {
public abstract void abstractMethod();
}
class ChildClass extends ParentClass {
@Override
public void abstractMethod() {
System.out.println("Implemented abstract method");
}
}
子类与接口
子类可以实现多个接口,接口中的方法必须在子类中实现。

interface Interface1 {
void method1();
}
interface Interface2 {
void method2();
}
class ChildClass implements Interface1, Interface2 {
@Override
public void method1() {
System.out.println("Method1");
}
@Override
public void method2() {
System.out.println("Method2");
}
}






