Java面向对象(下)

      Music 2005-6-15 15:0
一。类的继承
1。存在A类与B类,B类继承A类,B类继续所有A类的属性和方法。来看例子:
Student.java
class Person 
{
      public String name;
      public int age;
	  public Person(String name,int age)
	 {
		this.name=name;
		this.age=age;
	  }
	  public Person() //如果不写这个构造函数,看看对类Student有什么影响。
	  {
	  }
      public void getInfo() 
      {
       	System.out.println(name);    
      	System.out.println(age);    
      }
}
class Student extends Person
{
      public void study()
      {
      	    System.out.println("Studding");
      }
      
      public static void main(String[] args)
      {
      	Person p=new Person();
      	p.name="person";
      	p.age=30;
      	p.getInfo();
      	
      	Student s=new Student();
        s.name="student";
        s.age=16;
        s.getInfo();
        s.study();
      }
}

说明:
(1):继承关键字extends实现,继承可以简化类的定义。
(2):Java中只允许单继承,一个子类只能有一个父类,一个父类可以有多个子类。
(3):B类继承A类,C类继承B类,那么C即间接的继承了A类的所有的属性和方法。
(4):子类继承所有父类属性和行为,但是不继承构造方法。但是可以在子类中使用super调用你类的构造方法。
看例子:
class Student extends Person
{
	public Student(String name,int age,String school)
	{
		super(name,age);
		this.school=school;
	}
}

如果子类没有调用父类的构造方法,也没有使用this关键字调用重载构造方法,则创建的子类的实例对象,系统默认调用父类无参数的构造函数
2:子类可以修改从父类继承来的方法,即为方法的重写
例子:
class Person
{
	public String name;
	public int age;
	public void getInfo()
	{
		System.out.println(name);
		System.out.println(age);
	}
}
class Student1 extends Person
{
	String school = new String();	
	public void getInfo()//方法的覆盖
	{
		super.getInfo();//super继承Person类的getInfo方法
		System.out.println(school);
	}
	public static void main(String []args)
	{
		Person p1 = new Person();
		p1.name="Jack";
		p1.age=26;
		p1.getInfo();
		
		Student1 s1 = new Student1();
		s1.name="Marry";
		s1.age=30;
		s1.school="NanKai University";
		s1.getInfo();
	}
}

3.final关键字
(1)适用于修饰类、属性、方法及变量
(2)final修饰的类不被继承。方法不被子类重写
(3)final标记的变量即为常量,只能进行一次赋值
注:其实理解了final这个单词的意思也就好理解了,final当名词用时为结局的意思,当形容词用的时候为最后的,最终的,:)补充一下外语,要不为什么老外学种语言那么容易!
看几个小例子
final int x=5;//必须显示赋值
x=3;//错误的例子,final标记的变量即为常量,只能进行一次赋值

另外public static final x=5;x即为全局变量
二。抽象类与接口
1。抽象方法:在方法前以abstract修饰的方法即为抽象方法,包括抽象方法的类即为抽象类。抽象类也必须以abstract修饰。
抽象方法的格式:abstract 返回值类型 抽象方法(参数列表)
(1)抽象方法和抽象类必须以abstract修饰。
(2)抽象方法只是声明,而不实现。
(3)抽象类不能被实例化,即不能new。
(4)抽象类中所有的抽象方法被子类重写后,抽象类才能被实例化。
(5)抽象类中肯定有抽象方法,但不一定抽象类中全是抽象方法。
例子:
abstract class Test()
{
	abstract void Info()
	{
		
	}
}

2。接口:一个抽象类的所有方法全是抽象方法即为接口,其实接口也发球属于抽象类中一种比较特殊的格式。
(1)以关键字interface标记
(2)接口中只能包括常量(public static fianl也是属于其中)和抽象方法
(3)也只是声明,而没有实现,需要子类的重写
看一个接口的例子
abstract class Test()
{
	abstract void Info()
	{
		
	}
	abstract void Mar()
	{
		
	}
	
}

标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}