专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java面向对象---继承(java中面向对象)

temp10 2024-10-03 01:30:42 java教程 10 ℃ 0 评论


Java面向对象---继承(java中面向对象)


继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模


关键字extends:扩展,子类是父类的扩展


JAVA中类只有单继承,没有多继承!!


继承是类和类之间的一种关系,除此之外,类和类之间的关系还有依赖、组合、聚合等。继承关系的两个类,一个为子类(派生类),一个为父类(基类),子类继承父类。


public class Person /*extends Object*/ {
    //default、protected
    //private
    private String name;
    private int age;
    
    //public
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
    public void say(){
        System.out.println("i am a man");
    }
}
public class Student extends Person{
}
public class Application {
    public static void main(String[] args) {
        Student s = new Student();
        s.say();
        System.out.println(s.getAge());
    }
}


Object类


Java Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法


Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承 Object,成为 Object 的子类。


Object 类可以显示继承(使用extends),也可以隐式继承(默认)


super


  • super可以用来引用直接父类的实例变量。


public class Person {
    protected String name = "xiaoming";
}
public class Student extends Person{
    private String name = "xiaohong";
    public void test(String name){
        System.out.println(name);
        System.out.println(this.name);
        System.out.println(super.name);
    }
}
public class Application {
    public static void main(String[] args) {
        Student s = new Student();
        s.test("xiaolan");
    }
}


输出结果:


?



  • super可以用来调用直接父类方法。


public class Person {
    protected void print(){
        System.out.println("Person");
    }
}
public class Student extends Person{
    public void print(){
        System.out.println("student");
    }
    public void test(){
        this.print();
        super.print();
    }
}
public class Application {
    public static void main(String[] args) {
        Student s = new Student();
        s.test();
    }
}


输出结果:


?



  • super()可以用于调用直接父类构造函数。


public class Person {
    public Person(){
        System.out.println("Person的无参构造");
    }
}
public class Student extends Person{
    public Student(){
        //隐藏代码:调用了父类的无参构造
        super();//调用父类构造器,必须要在子类构造器的第一行
        System.out.println("Student的无参构造");
    }
}
public class Application {
    public static void main(String[] args) {
        Student s = new Student();
    }
}


输出结果:




super注意点:


  1. super调用父类的构造方法,必须在构造方法的第一个。
  2. super必须只能出现在子类的方法或者构造方法中。
  3. super和this不能同时调用构造方法


super对比this


  • 代表对象不同:
    • this:本身调用者这个对象
    • super:代表父类对象
  • 前提:
    • this:没有继承也可以使用
    • super:只能在继承条件才可以使用
  • 构造方法:
    • this();本类的构造
    • super();父类的构造

?

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表