java中super关键字的用法

基本用法

package super关键字;
/*
   子父类出现后,类成员的特点:
    类中成员:
      1,变量
       2,函数
       3 ,构造函数
       
   1,变量:
   如果子类中出现非私有的同名成员变量时,
   子类要访问本类中的变量,用this
   子类中要访问父类中的同名变量,用super
   
   super的使用和this的使用几乎一致。
   this代表的是本类对象的引用。
   super代表的是父类对象的引用。
 */
class Fu{
	 int num = 4;
}
class Zi extends Fu{
	int num = 5;
	void show() {
		System.out.println(super.num);  //访问的是父类中的变量
		System.out.println(this.num);  //访问的是本类中的变零
	}
}

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

sper在子类的函数和构造函数

package 面向对象;

/*
    子父类中的函数:
    
    当子类出现和父类一模一样的函数时,
    当子类对象调用该函数,会运行子类函数的内容。
    如同父类的函数被覆盖一样。
    
    这种情况是函数的另一个特性:重写(覆盖)
    但是子类虽具备该功能,但是功能的内容却和父类不一致,
    这时,没有必要定义新功能,而是使用覆盖的特性,保留父类的功能定义,并重写功能内容。
    
  覆盖:
  1,子类覆盖父类,必须保证子类权限大于父类权限(public,private),才可以覆盖,否则编译失败。
 2,静态只能覆盖静态。
    
 */

class Fu{
	void show() {
		System.out.println("Fu show");
	}
	void speak() {
		System.out.println("vb");
	}
}
class Zi extends Fu{
	void speak() {
		System.out.println("java");
	}
	void show() {
		System.out.println("Zi show");
	}
}


public class 覆盖 {

	public static void main(String[] args) {
		Zi z =  new Zi();
		z.speak();
		z.show();
		
       Student5 student5  = new Student5("张三",21); //当你想输出子类的构造函数主函数中直接输入值就行不需要调用方法
       student5.setName("李四");   
       student5.method();   //当修改名字之后想用一般函数输出,需要调用,
       System.out.println(student5.getName()); 
	}
}

//下面讲一下,子类调用构造函数和子类调用一般函数
class Person3{
	//创建变量:
	private String name;
	private int age;
	//创建构造函数
	Person3(String n,int b) {
		this.name = n;
		this.age = b;
		System.out.println("name"+n+"age:"+b);
		
	}
	//创建一般函数
	void show(String name) {
		this.setName(name);
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
class Student5 extends Person3{
	 Student5(String name,int age) {
		super(name,age);
	}
	 void method() {
		super.show(getName());
	}
}

你可能感兴趣的:(Java基础,java)