java入门——构造器和类的继承

package testClass;

public class Person {
          
   
    String name;
    int age;

    //构造器用来生成实例,可以设置一些默认值.
    // 如果不写出来,编译器也会自动生成一个构造器
    //构造器和类同名,不能有返回值,前面加一个public
    //使用new关键字其实是在调用构造器,并在堆中开辟空间
    public Person(){
          
   
        this.name = "Tom";
    }
    //有参构造,调用时可以传入参数
    //如果写了有参构造,就必须写出无参构造
    public Person(String name){
          
   
        this.name = name;
    }
    //可以有多个构造器
    //类里的方法可以互相调用
    public Person(String name, int age) {
          
   
        this(name);//调用其他构造器。当构造器的代码很多时,常用此方法
        this.age = age;
    }
    public void talk(){
          
   
        System.out.println("我是"+this.name);
    }
}
package testClass;

//一个子类可以拥有父类的属性和方法,称为继承
//java支持单继承不支持多继承,多继承可以通过接口实现
public class Student  extends Person{
          
   

    //Person类public的属性,Student对象都可以使用
    //Private属性不可以继承
    public void study(){
          
   
    //创建子类的对象时会先调用父类的无参构造,可以在子类的构造方法中加上super(),明确要先调用父类的无参构造。
        super();//如果想要使用父类的有参构造,就加上参数
        //也可以用super关键字调用父类的其他属性和方法
        super.talk();
        System.out.println(this.name+"在学习。");
    }

}

通过以下代码可以使用上面的两个类

public class Application {
          
   
    public static void main(String[] args) {
          
   

        //类是抽象的,需要实例化创建对象
        Student jack = new Student();
        jack.name = "Jack";
        jack.age = 15;
        jack.study();
    }
}

当父类子类和方法中都有同名的变量,优先调用方法中的变量,如果想要使用父类的变量就使用super关键字,想使用子类的变量就使用this关键字。同名方法的调用方式类似。

public class Fu{
          
   
int age = 50;
}

public class Zi{
          
   
int age = 30;
public void print(){
          
   
int age = 20;
System.out.println(age);
System.out.println(super.age);
System.out.println(this.age);
}

public class Demo{
          
   
public static void main(String[] args){
          
   
	Zi z = new Zi();
	z.print();
	}
}

java中只可以单继承,不可以多继承。但是可以多层继承。比如Son继承Father,Father类继承Grandfa类。

经验分享 程序员 微信小程序 职场和发展