`
hellojim
  • 浏览: 52236 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

extends,this,super,final 关键字的应用

    博客分类:
  • JAVA
阅读更多
//extends,this,super,final 关键字的应用
/*
	final 关键字的应用:
	1.如果 final 关键字加在了一个类前面,比如: final class Person 那么 Person 类就不能再被其它的类去 extends,
	  这个类就是最终版本的
	2.如果 final 关键字加在了一个类的某个方法前,比如:public final void talk()那么这个方法就不能被子类重写,
		这个方法就是最终版本
	3.如果 final 关键字加在了一个属性前:比如:public final String name ,那么 name 这个属性就成为了一个常量,就
	  必须对这个常进行赋值,一般 final 关键字和 static 组合使用 象这样 public static final String name = "zhangsan"; 
	  这样 name 属性就成了一个静态常量,就必须对它象上面这样进行显式初始化,此外象 public static final 标识的属性在其它类中
	  可以直接通过 类名.属性名的 方式访问,非常方便
 */
class Person {
	
	public static final String name = "lisi";
	public int age;
	
	public Person() {
		
	}
	
	public Person(int age) {
		this.age = age;	
	}
	
	public void talk() {
		
		System.out.println("name = " + name + ",age = " + age);	
	}
}

class Student extends Person {
	private String school;
	
	public Student(int age) {
		super(age);	//利用super关键字调用父类中相匹配的构造方法
	}
	public Student(int age,String school) {
		
		this(age); //利用this关键字调用本类中其它构造方法
		this.school = school;
	}
	
	public void talk() { //子类中的 talk 方法覆盖父类中同名的方法
		  /*利用 super.方法 来调用父类中的同名方法,调用父类中的同名方法时不可直接写成 talk(),那就是自己调用
		    自己了(成了一个递归调用,没有结束条件最终成为死循环)
		  */
			super.talk(); 
			System.out.print(",school = " + school);
	}
}

class TestStudent {
	public static void main(String[] args) {
		Student s = new Student(10,"yzschool");
		s.talk();
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics