Java 面向对象 之 super 关键字

简介:

http://www.verejava.com/?id=17159596599630

/**

    this: 代表当前类的引用
        1. 当局部变量和成员变量同名时,  成员变量要加 this 限定
        2. 实例化时 可以用 this 调用当前类的构造方法,   必须写在第一行
        3. 可以用 this  调用当前类的 普通方法

    super : 代表当前父类的引用
        1. 实例化子类时,  可以用  super 调用父类的 非私有方法
        2. 实例化子类时.    可以用 super 调用父类的  构造方法 ,  必须写在第一行
        3. 在子类的方法中 , 可以用 supe 调用父类的 非私有方法.
*/
public class Test1 {

    public static void main(String[] args) {
        // 实例化 农夫

        Father father = new Father();
        father.setName("农夫");
        father.setAge(90);
        System.out.println(father.getAge() + " 岁 " + father.getName() + " 有 " + father.getWealth());

        Father father = new Father("农夫", 90);
        System.out.println(father.getAge() + " 岁 " + father.getName() + " 有 " + father.getWealth());

        Son son = new Son("农夫", 90);
        System.out.println("儿子知道父亲的 : " + son.getAge() + " 岁 " + son.getName() + " 有 " + son.getWealth());
        son.work();
    }
}

//父类
class Father {
    
    private String name;
    private int age;
    private String wealth;

    public Father() {
        wealth = "100两黄金";
    }

    public Father(String name, int age) {
        this();
        this.name = name;
        //this.age=age;
        this.setAge(90);
    }

    public void work() {
        System.out.println("耕地");
    }

    public String getWealth() {
        return wealth;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

//子类
class Son extends Father {
    public Son(String name, int age) {
        super(name, age);
        //super.setName(name);
        //super.setAge(age);
    }

    public void work() {
        super.work();
        System.out.println("儿子 寻找黄金宝藏");
        System.out.println("只有通过自己的勤奋劳动, 才能得到果实 是最大的宝藏");
    }
}

http://www.verejava.com/?id=17159596599630

目录
相关文章
|
17小时前
|
缓存 Java 编译器
Java多线程基础-6:线程安全问题及解决措施,synchronized关键字与volatile关键字(二)
加锁其实是一个比较低效的操作,因为加锁就可能涉及到阻塞等待。
12 1
|
16小时前
|
安全 Java 编译器
Java多线程基础-6:线程安全问题及解决措施,synchronized关键字与volatile关键字(一)
下面就是一个线程不安全的例子。该代码中创建了一个counter变量,同时分别创建了两个线程t1和t2,让这两个线程针对同一个counter令其自增5w次。
13 0
|
1天前
|
Java 编译器
Java编程语言中,关键字和标识符
Java编程语言中,关键字和标识符
12 1
|
1天前
|
安全 Java 编译器
Java面向对象之——多态
Java面向对象之——多态
|
1天前
|
Java 程序员 编译器
Java面向对象之——继承
Java面向对象之——继承
|
1天前
|
存储 Java 编译器
Java面向对象之——封装
Java面向对象之——封装
|
1天前
|
Java
Java程序设计实验3 | 面向对象(上)(二)
分数的分子和分母用两个整型数表示,类所拥有的方法包括对分数进行加、减、乘、除等运算,以及输出分数的方法,输出分数的格式应该是:分子/分母。
10 0
|
1天前
|
Java
Java程序设计实验3 | 面向对象(上)(一)
实验目的是理解和掌握面向对象编程的基本概念,包括类的声明、实例化和调用,方法及构造方法的定义,方法重载,值传递和地址传递,以及使用this关键字和static关键字。
11 0
|
2天前
|
Java
Java并发编程:深入理解Synchronized关键字
【5月更文挑战第27天】Java并发编程是Java开发中不可或缺的一部分,而synchronized关键字则是实现并发控制的重要手段之一。本文将深入探讨synchronized关键字的使用方法、原理以及注意事项,帮助读者更好地理解和应用这一关键字,提高Java并发编程的能力。
|
4天前
|
Java
Java static关键字
`static`关键字用于修饰成员变量和方法,表示它们属于类而非对象。静态成员变量在内存中只有一份,可被所有对象共享,建议通过类名访问。实例变量每个对象独有,需通过对象访问。静态成员方法与类关联,可直接调用,不依赖对象,而实例方法需要对象来调用并能访问实例成员。在方法中,类方法不能直接访问实例成员,但实例方法可以访问类和实例成员。记得在适当时候使用`this`关键字。
10 1