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类。